绑定为多重绑定提供UnsetValue

时间:2017-03-30 11:22:53

标签: c# wpf datatable binding multibinding

我有一个datagrid,可以从数据表中获取数据 如果有一个带有contextmenu的文本框,并且这个contextmenu有一个转换器(带有多个绑定) 问题是我数据表绑定数据有1或0作为数据,但在转换器中我得到UnsetValue。 这是xaml代码:

<DataGrid AutoGenerateColumns="False" HorizontalAlignment="Stretch"  VirtualizingStackPanel.VirtualizationMode="Recycling" VirtualizingStackPanel.IsVirtualizing="True"  Margin="0,1,0,0" x:Name="TrackingDataGrid" IsReadOnly="True" CanUserAddRows="False"  CanUserDeleteRows="False"  IsManipulationEnabled="True"  CanUserResizeColumns="False" ItemsSource="{Binding TrackingTable}" ColumnHeaderStyle="{DynamicResource dataGridColumnStyle}"  Style="{DynamicResource dataGridStyle}"  EnableColumnVirtualization="True"  IsEnabled="True" BorderThickness="0" CellStyle="{DynamicResource CellStyleBase}" VerticalGridLinesBrush="#FFA0A7AD"  RowHeight="30" MinRowHeight="20" GridLinesVisibility="None" SelectionMode="Single" Grid.Row="1" Grid.ColumnSpan="10" Panel.ZIndex="4" MinHeight="30" Loaded="TrackingDataGrid_Loaded" CanUserReorderColumns="False" VerticalScrollBarVisibility="Disabled" ScrollViewer.CanContentScroll="True">
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Process Time" IsReadOnly="True"  Width="100">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock   Text="{Binding DeliveryDate}" TextTrimming="CharacterEllipsis" >
                        <TextBlock.ContextMenu>
                            <ContextMenu>
                                <MenuItem x:Name="StandbyProcessMenuITem" Header="StandBy Process" Click="StandbyProcessMenuITem_Click" >
                                    <!--<MenuItem.Visibility>
                                            <MultiBinding Converter="{StaticResource RowUndoButtonVisibility}">
                                                <Binding Path="ProductIsStandby" />
                                                <Binding Path="ProductIsDone" />
                                            </MultiBinding>
                                        </MenuItem.Visibility>-->
                                </MenuItem>
                                <MenuItem x:Name="UndoProcessMenuITem" Header="Undo Process" Click="UndoProcessMenuITem_Click" >
                                    <MenuItem.Visibility>
                                        <MultiBinding Converter="{StaticResource RowUndoButtonVisibility}">
                                            <Binding Path="{Binding ProductIsStandby}" />
                                            <Binding Path="{Binding ProductIsDone}" />
                                        </MultiBinding>
                                    </MenuItem.Visibility>
                                </MenuItem>
                                <MenuItem x:Name="FinishProcessMenuITem" Header="Finish Process" Click="FinishProcessMenuITem_Click">
                                </MenuItem>
                            </ContextMenu>
                        </TextBlock.ContextMenu>
                    </TextBlock>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

1 个答案:

答案 0 :(得分:0)

DataContext的{​​{1}}与MenuItem的{​​{1}}不同,但您可以使用DataContext绑定到CellTemplate 1 {} RelativeSource

PlacementTarget