2014-02-17 7 views
0

Первый Я новичок в WPF и MVVM так, медведь со мной, если это простой вопросLog View Сетка в WPF

Я создаю просмотра журнала для приложения в WPF, и у меня есть это видение сетки заголовков журналов, которые вы можете щелкнуть и развернуть, чтобы отобразить текст журнала как часть сетки, при этом все остальные строки перемещаются вниз, чтобы разместить эту текстовую строку.

Каков наилучший способ для этого? Есть ли уже элемент управления? Нужно ли создавать собственный пользовательский элемент управления?

+0

Ваш вопрос является очень плохим для Stackoverflow. Вам нужно приложить усилия, чтобы показать, что вы уже пробовали, и почему это не сработало, или с какими конкретными проблемами вы столкнулись. Тем не менее, см. Мой пример Log Viewer [Здесь] (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

Попробуйте использовать расширитель. Пример кода ниже. Вы можете продолжать добавлять Expanders один за другим. Просто убедитесь, что они хорошо расположены в 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> 
Смежные вопросы