没有选定项目的WPF树视图的验证规则

时间:2017-09-24 12:48:06

标签: wpf caliburn.micro

我在WPF中有一个树视图,我通过来自视图模型的caliburn micro绑定节点。

我想设置一个简单的验证:当没有选择节点时,树视图应该处于错误状态并显示消息,否则不显示。对于textbox或combobox等其他控件,我只需在绑定时在视图中设置验证属性,并为viewmodel实现IDataErrorInfo接口。但是我不知道如何用树视图来做这件事。

我的方法直到现在:

我为树创建验证规则,以检查是否选择了树视图节点。规则已执行,似乎有效,但我不知道如何在Xaml中激活验证。如何激活树视图的验证?

查看:

<TreeView Name="Items" />

视图模型:

public List<TreeViewItem> Items
{
  get { return mItems; }
  set
  {
    mItems= value;
    NotifyOfPropertyChange(() => Items);
  }
}

public string this[string columnName]
{
   get
   {
      if ((columnNames == "Items") && !Items.Any(x => x.IsSelected))
      {
         return "Error..";
      }
      ...
   }
}

1 个答案:

答案 0 :(得分:1)

在视图模型中实施indent界面,并在视图中为INotifyDataErrorInfo定义Validation.ErrorTemplate

查看:

TreeView

查看型号:

<TreeView Name="Items" Margin="10">
    <Validation.ErrorTemplate>
        <ControlTemplate>
            <Grid>
                <Border BorderThickness="1" BorderBrush="Red">
                    <AdornedElementPlaceholder />
                </Border>
            </Grid>
        </ControlTemplate>
    </Validation.ErrorTemplate>
</TreeView>