У меня есть два шаблона данных, как показано ниже:
<DataTemplate x:Key="crTTemplate" DataType="local:crTRow">
<Grid Margin="0,2,0,2" HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="labels" />
<ColumnDefinition MinWidth="120" />
</Grid.ColumnDefinitions>
<TextBlock Margin="6,0,5,0" VerticalAlignment="Center" HorizontalAlignment="Stretch" Grid.Column="0" Text="{Binding Path=RowDisplayName}" />
<ComboBox VerticalAlignment="Center" HorizontalAlignment="Stretch" Grid.Column="1" ItemsSource="{Binding Path=Values}"
SelectedValue="{Binding SelectedValue, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding SelectedValue, UpdateSourceTrigger=PropertyChanged}">
</ComboBox>
</Grid>
</DataTemplate>
<DataTemplate x:Key="crVTemplate" DataType="local:crVRow">
<Grid Margin="0,2,0,2" HorizontalAlignment="Stretch" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="labels" />
<ColumnDefinition MinWidth="120" />
</Grid.ColumnDefinitions>
<TextBlock Margin="6,0,5,0" VerticalAlignment="Center" HorizontalAlignment="Stretch" Grid.Column="0" Text="{Binding Path=RowDisplayName}" />
<local:NumericUpDownControl VerticalAlignment="Center" HorizontalAlignment="Stretch" Grid.Column="1" Value="{Binding SelectedValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
</DataTemplate>
Эти шаблоны данных используются в групповом поле, как показано ниже:
<GroupBox Grid.Row="0" Padding="0,5,5,0" HorizontalAlignment="Stretch" VerticalAlignment="Top" >
<ItemsControl Grid.IsSharedSizeScope="True" Margin="5,0,0,0" ItemsSource="{Binding Path=CRRows}" ItemTemplateSelector="{StaticResource TempSelector}"/>
</GroupBox>
CRRows
- это наблюдаемая коллекция, для которой я добавьте два элемента каждый из типов данных crTRow
и crvRow
. Я хочу контролировать видимость всего элемента управления, добавленного для crvRow, на основе значения поля со списком, выбранного в crTRow.