Видимость триггера данных WPF + нулевое значение

Я новичок в WPF. Я хочу установить для Radiobutton значение «Скрытая видимость», когда значение привязки данных равно Null. Я использую набор инструментов WPF. Это мой код, но он не работает:

    <dg:DataGrid x:Name="dtGrdData" HorizontalScrollBarVisibility="Hidden" SelectionMode="Extended" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="False" CanUserSortColumns="False" AutoGenerateColumns="False"
                 RowHeaderWidth="0" RowHeight="50" >
        <DataTrigger Binding="{Binding P_DAY_PRICE}" Value="{x:Null}">
            <Setter Property="RadioButton.Visibility" Value="Hidden"></Setter>
        </DataTrigger>
        <dg:DataGrid.Columns>
            <dg:DataGridTemplateColumn Header="1 day" Width="1.5*" >
                <dg:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <RadioButton x:Name="rdBtnDayPrice" GroupName="grpNmPrice" Content="{Binding Path=P_DAY_PRICE}" Style="{StaticResource toggleStyle}" Checked="RadioButton_Checked"></RadioButton>
                    </DataTemplate>
                </dg:DataGridTemplateColumn.CellTemplate>
            </dg:DataGridTemplateColumn>
        </dg:DataGrid.Columns>
    </dg:DataGrid>

Вы можете помочь мне ? Спасибо


person Cyril    schedule 29.03.2011    source источник
comment
Что случается? Что такое P_DAY_PRICE? Является ли P_DAY_PRICE членом контекста данных DG? Вы не даете нам достаточно информации, чтобы помочь вам.   -  person CodingGorilla    schedule 29.03.2011
comment
P_DAY_PRICE — это поле из моей таблицы данных. я заполнил dtGrdData.ItemsSource результатом хранимой процедуры   -  person Cyril    schedule 29.03.2011
comment
Триггер данных будет использовать текущие DataContext, а не данные в ItemsSource. Вероятно, вам нужно правильно настроить DataContext сетки.   -  person CodingGorilla    schedule 29.03.2011


Ответы (2)


Пододвиньте DataTrigger ближе к RadionButton:

<RadioButton ...>
    <RadioButton.Style>
        <Style TargetType="RadioButton">
            <Style.Triggers>
                <DataTrigger Binding="{Binding P_DAY_PRICE}" Value="{x:Null}">
                    <Setter Property="Visibility" Value="Hidden"></Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </RadioButton.Style>
</RadioButton>
person Snowbear    schedule 29.03.2011

Я предлагаю вам установить привязку непосредственно к RadioButton и использовать свойство TargetNullValue объекта Binding.

<RadioButton x:Name="rdBtnDayPrice" Visibility={Binding Path=P_DAY_PRICE, TargetNullValue=Hidden, Converter=...} GroupName="grpNmPrice" Content="{Binding Path=P_DAY_PRICE}" Style="{StaticResource toggleStyle}" Checked="RadioButton_Checked" 

You will need a converter to convert 'P_DAY_PRICE' value to Visibility enum value and that should do the job.

Риана

person Riana    schedule 29.03.2011