2016-08-08 90 views
1

Ich habe den folgenden XAML-Code in meiner C#/WPF App.Anzeigen von Daten in WPF in der gewünschten Reihenfolge

Ich muss in der Lage sein, den Inhalt von View1 nach diesen Textblöcken und Textfeldern anzuzeigen. Stattdessen erscheinen die Inhalte von View1 nun nach dem StackPanel-Inhalt. Was vermisse ich hier bitte? Danke für Ihre Hilfe.


<Window 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:MainViewModel="clr-namespace:MyTool.ViewModel" 
     xmlns:ViewModel="clr-namespace:MyTool.ViewModel.MyProducts" 
     xmlns:View="clr-namespace:MyTool.View" x:Class="MyTool.MainWindow" 
     xmlns:Views="clr-namespace:MyTool.View.MyProducts" 
     xmlns:v="clr-namespace:MyTool.View.MyProducts" 
     xmlns:vm="clr-namespace:MyTool.ViewModel.MyProducts" 
     Title="{Binding DisplayName, Mode=OneWay}" ResizeMode="CanResize" WindowStartupLocation="CenterScreen"> 
    <Window.DataContext> 
     <MainViewModel:MyViewModel/> 
    </Window.DataContext> 
    <Grid Margin="5"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"></RowDefinition> 
      <RowDefinition Height="Auto"></RowDefinition> 
     </Grid.RowDefinitions> 

     <StackPanel Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Horizontal" Height="28" Width="auto" Margin="5,0,0,0"> 

     <TextBlock TextWrapping="Wrap" Text="Security Type" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="0,0,5,0" Style="{DynamicResource DefaultTextBlockStyle}"/> 
      <ComboBox Width="360" Margin="1,0" ItemsSource="{Binding MyProductTypes}" DisplayMemberPath="Code" SelectedValuePath="ID" SelectedItem="{Binding SelectedProductType, Mode=TwoWay}" TabIndex="0" /> 





      <Button x:Name="btnSave" Content=" Save " Margin="25,0,5,0" Command="{Binding SaveCommand, Mode=OneWay}" TabIndex="31" /> 

      <Button Content=" Clear " Command="{Binding ClearCommand, Mode=OneWay}" Margin="0,0,5,0" TabIndex="34"/> 
     </StackPanel> 

     <Grid Margin="5" Grid.Row="1" > 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="10"/> 
       <RowDefinition Height="Auto" MinHeight="24"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="auto"/> 
       <ColumnDefinition Width="200"/> 
       <ColumnDefinition Width="23"/> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="14*"/> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="71*"/> 
      </Grid.ColumnDefinitions> 
     <Grid Margin="5" Grid.Row="1" > 

      <TextBlock Grid.Column="6" HorizontalAlignment="Right" Grid.Row="0" TextWrapping="Wrap" VerticalAlignment="Bottom" Style="{DynamicResource SysdateMessageStyle}" Text="{Binding SystemDateMessage, Mode=OneWay}" Height="16" Width="0" /> 
      <TextBlock Grid.Column="1" HorizontalAlignment="Left" TextWrapping="Wrap" Text="T1" VerticalAlignment="Top" Grid.Row="1" Style="{DynamicResource HeadingStyle}" Grid.RowSpan="1" Margin="1,10,0,0" Height="23" Width="112"/> 
      <TextBlock Grid.Column="1" HorizontalAlignment="Left" Margin="1,1,0,0" Grid.Row="3" TextWrapping="Wrap" VerticalAlignment="Top" Text="T2" Style="{DynamicResource DefaultTextBlockStyle}" Height="18" Width="61"/> 
      <TextBlock Grid.Column="1" HorizontalAlignment="Left" Margin="1,1,0,0" Grid.Row="4" TextWrapping="Wrap" VerticalAlignment="Top" Text="T3" Style="{DynamicResource DefaultTextBlockStyle}" Height="18" Width="89"/> 

      <TextBlock Grid.Column="1" HorizontalAlignment="Left" Margin="1,1,0,0" Grid.Row="5" TextWrapping="Wrap" VerticalAlignment="Top" Text="T4" Style="{DynamicResource DefaultTextBlockStyle}" Height="18" Width="103"/> 
      <TextBlock Grid.Column="1" HorizontalAlignment="Left" Margin="1,1,0,0" Grid.Row="6" TextWrapping="Wrap" VerticalAlignment="Top" Text="T5" Style="{DynamicResource DefaultTextBlockStyle}" Height="18" Width="197"/> 



      <TextBlock Grid.Column="1" HorizontalAlignment="Left" Margin="1,1,0,0" Grid.Row="7" TextWrapping="Wrap" VerticalAlignment="Top" Text="T6" Style="{DynamicResource DefaultTextBlockStyle}" Height="18" Width="103"/> 

      <TextBox Name="txtTargetTicker1" Grid.Column="3" IsEnabled="{Binding EnableDealView}" HorizontalAlignment="Left" Height="23" Margin="1,1,0,0" Grid.Row="3" TextWrapping="Wrap" VerticalAlignment="Top" Width="155" Text="{Binding F1}" Style="{DynamicResource TargetTickerStyle}" TabIndex="2"/> 

      <TextBox Name="txtTargetTicker" Grid.Column="3" IsEnabled="{Binding F2}" HorizontalAlignment="Left" Height="23" Margin="1,1,0,0" Grid.Row="4" TextWrapping="Wrap" VerticalAlignment="Top" Width="155" Text="{Binding F3}" Style="{DynamicResource TargetTickerStyle}" TabIndex="2"/> 
      <TextBox Grid.Column="3" IsEnabled="{Binding F4}" HorizontalAlignment="Left" Height="23" Margin="1,21,0,0" Grid.Row="4" TextWrapping="Wrap" VerticalAlignment="Top" Width="155" Text="{Binding F5}" Style="{DynamicResource AcquirerTickerStyle}" TabIndex="3" Grid.RowSpan="2"/> 

      <TextBox Grid.Column="3" IsEnabled="{Binding F6}" HorizontalAlignment="Left" Margin="1,1,0,0" Grid.Row="6" Width="155" Text="{Binding F7}" TabIndex="4"/> 

      <StackPanel Grid.Column="3" IsEnabled="{Binding F8}" Grid.Row="7" HorizontalAlignment="Left" VerticalAlignment="Center" FlowDirection="LeftToRight" Orientation="Horizontal" Margin="0,3,0,0" Width="250" Height="22"> 
       <TextBox Grid.Column="2" IsEnabled="{Binding F9}" HorizontalAlignment="Left" Height="23" Margin="1,1,0,0" Grid.Row="5" TextWrapping="Wrap" VerticalAlignment="Top" Width="155" Style="{DynamicResource AcquirerTickerStyle}" TabIndex="3"/> 
      </StackPanel> 

      <TextBlock Grid.Column="4" HorizontalAlignment="Left" Margin="1,1,0,0" Grid.Row="3" TextWrapping="Wrap" VerticalAlignment="Top" Style="{DynamicResource DefaultTextBlockStyle}" Height="18" Width="75" Grid.ColumnSpan="2"> 
      <Run Text="Asset Currency"/> 
      <Run Text="{Binding F10}"/> 
      </TextBlock> 
      <TextBlock Grid.Column="4" HorizontalAlignment="Left" Margin="1,1,0,0" Grid.Row="4" TextWrapping="Wrap" VerticalAlignment="Top" Style="{DynamicResource DefaultTextBlockStyle}" Height="18" Width="87" Grid.ColumnSpan="2"> 
      <Run Text="Manager"/> 
      <Run Text="{Binding F11}"/> 
      </TextBlock> 
      <TextBlock Grid.Column="4" HorizontalAlignment="Left" Margin="1,1,0,5" Grid.Row="5" TextWrapping="Wrap" Style="{DynamicResource DefaultTextBlockStyle}" Width="53" Grid.ColumnSpan="2"> 
      <Run Text="Bid Value"/> 
      <Run Text="{Binding F12}"/> 
      </TextBlock> 

      <TextBlock Grid.Column="4" HorizontalAlignment="Left" Margin="1,1,0,0" Grid.Row="6" TextWrapping="Wrap" VerticalAlignment="Top" Text="Country of risk" Style="{DynamicResource DefaultTextBlockStyle}" Height="18" Width="120" Grid.ColumnSpan="2"/> 


     </Grid> 
      <ContentPresenter Content="{Binding CurrentViewModel}"> 
       <ContentPresenter.Resources> 
        <DataTemplate DataType="{x:Type ViewModel:VM1}"> 
         <Views:View1/> 
        </DataTemplate> 
        <DataTemplate DataType="{x:Type ViewModel:VM2}"> 
         <Views:View2/> 
        </DataTemplate>     
       </ContentPresenter.Resources> 
      </ContentPresenter> 

     </Grid> 
    </Grid> 
</Window> 
+1

Ihr Layout muss definitiv aufgeräumt werden, um vernünftig arbeiten zu können. Sie haben viel zu viele Spalten und Zeilen in Ihrem Grid. Sie sollten Steuerelemente in organisierte Subcontainer wie verschachtelte StackPanels und ähnliche gruppieren. Das wird ein Alptraum, den es zu bewahren gilt. –

+0

Zunächst einmal befindet sich diese große Liste von Steuerelementen nicht einmal innerhalb des Rasters, in dem alle Spalten und Zeilen definiert sind. Sie legen alles in ein verschachteltes Grid ohne Spalten und Zeilen. –

Antwort

1

Was soll ich hier fehlt bitte?

Setzen Sie nicht die ContentPresenter innerhalb der Grid?

Tatsache ist, ohne eine gute Minimal, Complete and Verifiable code example ist es unmöglich zu sagen, sicher. Aber basierend auf dem, was Sie gepostet haben, sieht es so aus, als hätten Sie das Steuerelement einfach an die falsche Stelle im XAML gesetzt.

I.e. Das Layout sollte in etwa so aussehen:

<Grid Margin="5"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"></RowDefinition> 
     <RowDefinition Height="Auto"></RowDefinition> 
     <RowDefinition Height="Auto"></RowDefinition> 
    </Grid.RowDefinitions> 

    <StackPanel Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Horizontal" Height="28" Width="auto" Margin="5,0,0,0"> 
     <!-- contents of StackPanel --> 
    </StackPanel> 

    <Grid Margin="5" Grid.Row="1" > 
     <!-- contents of inner Grid --> 
    </Grid> 
    <ContentPresenter Content="{Binding CurrentViewModel}" Grid.Row="2"> 
     <ContentPresenter.Resources> 
      <DataTemplate DataType="{x:Type ViewModel:VM1}"> 
       <Views:View1/> 
      </DataTemplate> 
      <DataTemplate DataType="{x:Type ViewModel:VM2"> 
       <Views:View2/> 
      </DataTemplate>     
     </ContentPresenter.Resources> 
    </ContentPresenter> 
</Grid> 
+0

Danke für Ihre Eingaben Peter.Sorry, ich habe das gleiche versucht, aber kein Glück. –

+0

Sicher, ich habe jetzt meinen vollständigen XAML-Code kopiert. –