小编Joe*_*e K的帖子

MVVM - 在绑定属性不存在时隐藏控件

我想知道如果视图模型中不存在控件绑定到的属性,是否可以隐藏视图上的控件.例如,如果我有以下内容:

<CheckBox Content="Quote"
          IsChecked="{Binding Path=IsQuoted}" />
Run Code Online (Sandbox Code Playgroud)

我可以在XAML中检测到视图模型上不存在IsQuoted属性,只是隐藏该实例中的控件.

我本质上是创建一个向导对话框,它在一组视图模型中移动,显示每个视图模型的相关视图.对于集合中的某些视图模型,将出现"IsQuoted"属性,而有些则不存在.

我希望在当前视图模型具有属性时显示这些视图之外的复选框,并在视图模型不显示时隐藏.所有视图模型都是从一个公共基类派生出来的,但我宁愿不通过添加"ShowQuoted"属性等来混乱基类.

思考?而且,提前谢谢......

wpf xaml binding visibility mvvm

15
推荐指数
1
解决办法
5691
查看次数

DataTemplate可以绑定到嵌套类吗?

XAML中的DataTemplate可以与嵌套类相关联吗?

我正在研究MVVM应用程序,我遇到了数据模板问题.我有一个视图模型,为项目控件提供其他视图模型的集合.这些项是在外部视图模型中定义为嵌套类的层次结构的一部分.到目前为止,我还无法在XAML中创建一个映射来引用内部嵌套类.

这是类层次结构(为简洁起见而简化):

public class MainViewModel
{
    public class A
    {
    }

    public class B : A
    {
    }

    public class C : A
    {
    }

    public ObservableCollection<A> Items
    {
        get;
        set;
    }
}
Run Code Online (Sandbox Code Playgroud)

在XAML中,我正在尝试将DataTemplate映射到类型B和C,但我无法完全限定嵌套类名.

<ItemsControl ItemsSource="{Binding Path=Items}">
    <ItemsControl.Resources>
        <DataTemplate DataType="{x:Type ns:BracingViewModel.B}">
            <Grid>
            ....
            </Grid>
        </DataTemplate>
        <DataTemplate DataType="{x:Type ns:BracingViewModel.C}">
            <Grid>
            ....
            </Grid>
        </DataTemplate>
    </ItemsControl.Resources>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

问题:对嵌套类的引用在XAML中显示为构建错误.我得到以下内容:

Error   5   Cannot find the type 'ns:B'. Note that type names are case sensitive. Line...

Error   5   Cannot find the type 'ns:C'. Note that …
Run Code Online (Sandbox Code Playgroud)

wpf xaml datatemplate mvvm nested-class

8
推荐指数
1
解决办法
4529
查看次数

标签 统计

mvvm ×2

wpf ×2

xaml ×2

binding ×1

datatemplate ×1

nested-class ×1

visibility ×1