Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将按钮隐藏在“中”;新行“;WPF数据网格中的模板?_C#_Wpf_Data Binding_Datagrid - Fatal编程技术网

C# 如何将按钮隐藏在“中”;新行“;WPF数据网格中的模板?

C# 如何将按钮隐藏在“中”;新行“;WPF数据网格中的模板?,c#,wpf,data-binding,datagrid,C#,Wpf,Data Binding,Datagrid,我有一个网格,有图像和按钮,允许用户添加或删除图像。例如: 两个按钮的可见性都绑定到模型Xaml: <DataGridTemplateColumn Header="Photo" IsReadOnly="True"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <StackPanel Orientation="Horiz

我有一个网格,有图像和按钮,允许用户添加或删除图像。例如:

两个按钮的可见性都绑定到模型Xaml:

<DataGridTemplateColumn Header="Photo" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal">
            <Button Name="btnAddPhoto" Content=" Add " Visibility="{Binding BtnAddPhotoVisibility}"></Button>
            <Button Name="BtnExcludePhoto" Content=" Del " Visibility="{Binding BtnExcludePhotoVisibility}"></Button>
            <Image  MaxHeight="50" MaxWidth="50" Tag="Photo" Stretch="Uniform" Source="{Binding Photo}" MouseUp="OnMouseUpBinary" />
        </StackPanel>
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>
问题是:最后一行(用于添加iten)位于网格中,但在打开网格时未真正绑定(如图所示)。如果我在最后一行单击,将创建列表中的类,并触发操纵控件可见性的逻辑。编辑最后一行后,会发生以下情况:


问题是:当打开网格时,如何触发最后一行DEL按钮的可见性逻辑?

我认为您的绑定中有一个NullReferenceExection

(this.Photo == null) || (this.Photo.Length == 0)
如果照片为null,则this.Photo.Length==0将引发NullReferenceExection

执行此操作。照片?.Length==0或经典:

if (this.Photo == null) 
     return Visibility.Collapsed;
else
  if this.Photo.Lenght == 0
    return Visibility.Collapsed;


....

尝试将绑定的
回退
属性设置为已折叠:

<Button Name="BtnExcludePhoto" Content=" Del "
    Visibility="{Binding BtnExcludePhotoVisibility, FallbackValue=Collapsed}" />


默认情况下,当绑定无法解析时,此选项会将其折叠。

看起来您缺少绑定通知(要隐藏
添加
按钮并显示
删除
)。Google for
INotifyPropertyChanged
,总体上阅读了有关MVVM的内容。我没有错过,谢谢。没有成功,但谢谢Sven。在调试代码时,getter被触发3次:对于ids 8、9和10。最后一行没有命中getter,因为列表中的对应类不存在。这意味着:网格有4行,但列表有3行。网格中的最后一项仅存在于可见集合中,而不存在于可观察集合中。当最后一行进入编辑模式时,第四个类是include,触发getter。谢谢,先生,这解决了问题。上帝保佑你和你的家人。
<Button Name="BtnExcludePhoto" Content=" Del "
    Visibility="{Binding BtnExcludePhotoVisibility, FallbackValue=Collapsed}" />