2014-02-17 70 views
0

首先我是新來WPF和MVVM所以忍耐一下,如果這是一個簡單的問題日誌查看網格在WPF

我創造了在WPF應用程序中的日誌查看器,我有一格的這一願景的日誌標題,您可以單擊並展開以將日誌文本顯示爲網格的一部分,其他所有行都向下移動以適應此文本行。

完成此操作的最佳方法是什麼? 有沒有控件已經存在? 我是否需要創建自己的自定義控件?

+0

你的問題是一個非常糟糕的格式爲Stackoverflow。你需要努力展示你已經嘗試過的東西,爲什麼它不起作用,或者你面臨的具體問題。不過,請參閱我的Log Viewer示例[Here](http://stackoverflow.com/a/16745054/643085)。確保你至少註冊了它。 –

回答

1

你應該使用RowsDetailsTemplate網格:

<DataGrid Grid.Row="1" Margin="4,0,4,4" AutoGenerateColumns="False" ItemsSource="{Binding SomeItemsSource}" CanUserAddRows="False" AlternatingRowBackground="#FFCED9FF" RowDetailsTemplate="{StaticResource gridDetilsTemplate}"> 
       <DataGrid.Columns> 
        <DataGridTextColumn Binding="{Binding SomeValue}" Header="SOME TEXT" IsReadOnly="True"/> 
        ... 
       </DataGrid.Columns> 
      </DataGrid> 

而且在你父母的字典資源模板(可以是任何父詞典資源,或者你也可以在網格中直接寫模板) :

<Window.Resources>    
     <DataTemplate x:Key="gridDetilsTemplate"> 
      <Border BorderBrush="Black" BorderThickness="1,0,1,1" Margin="2,0,2,2" CornerRadius="0,0,3,3" Padding="4,0,0,0">     
       <TextBlock Text="{Binding SomeValue}"/> 
      </Border> 
     </DataTemplate> 

我覺得這是你需要的,一個網格行的細節。希望工作。

+0

這非常適合我的需求,非常感謝! –

0

嘗試使用擴展器。下面的示例代碼。您可以繼續添加擴展器。只要確保它們很好地放置在Grid(Grid1)中即可獲得乾淨的用戶界面。

<GroupBox x:Name="GroupBox1" Header="User Detail" > 
       <Grid x:Name="Grid1" HorizontalAlignment="Left" Margin="0,0,0,0" VerticalAlignment="Top" 
         DataContext="yourdatacontext"> 
        <Grid.Resources>      
        </Grid.Resources> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="Auto" /> 
         <ColumnDefinition Width="Auto" /> 
         <ColumnDefinition Width="Auto" /> 
         <ColumnDefinition Width="Auto" /> 
        </Grid.ColumnDefinitions> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto" /> 
         <RowDefinition Height="Auto" />      
        </Grid.RowDefinitions> 
<Expander Grid.Column="0" Header="Sample Expander" ToolTip="This is a test" Grid.ColumnSpan="4" 
          Grid.Row="6"> 
         <Border CornerRadius="3" BorderBrush="#FF5DADD9" BorderThickness="1"> 
          <Grid Background="#FFE5E5E5"> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="Auto" /> 
            <ColumnDefinition Width="Auto" /> 
            <ColumnDefinition Width="Auto" /> 
           </Grid.ColumnDefinitions> 
           <Grid.RowDefinitions> 
            <RowDefinition Height="Auto" /> 
            <RowDefinition Height="Auto" /> 
            <RowDefinition Height="Auto" />          
           </Grid.RowDefinitions> 

           <Label Content="Label1:" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Left" Margin="3" VerticalAlignment="Center"/> 
           <TextBox x:Name="tb1" Grid.Column="1" 
             HorizontalAlignment="Left" Height="23" Margin="3" Grid.Row="0" 
             Text="{Binding column, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" 
             VerticalAlignment="Center" Width="120" /> 
           <TextBlock TextWrapping="Wrap" Width="500" Grid.Column="2" Grid.Row="0" 
             Text="sample text." /> 

       </Grid> 
      </Border> 
    </Expander> 
</Grid> 
</GroupBox>