gpt4 book ai didi

c# - UserControl 中的 DependencyProperty bool

转载 作者:行者123 更新时间:2023-11-30 15:41:45 26 4
gpt4 key购买 nike

我对 UserControl 中的 DependencyProperty 有疑问。我的控件公开了两个依赖属性,一个 bool 值和一个字符串。 string 属性有效,但 bool 无效。我没有收到任何错误,但任何更改都不会反射(reflect)出来。

我这样定义属性:

private static readonly DependencyProperty IncludeSubdirectoriesProperty =
DependencyProperty.Register(
"IncludeSubdirectories",
typeof(bool),
typeof(DirectorySelect),
new FrameworkPropertyMetadata(false) { BindsTwoWayByDefault = true }
);

public bool IncludeSubdirectories
{
get { return (bool) GetValue(IncludeSubdirectoriesProperty); }
set { SetValue(IncludeSubdirectoriesProperty, value); }
}

在用户控件的 XAML 中,我像这样绑定(bind)到属性:

<CheckBox
Name="IncludeSubdirectoriesCheckbox"
IsChecked="{Binding Path=IncludeSubdirectories, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
Include subfolders</CheckBox>

当我使用控件时,我会像这样绑定(bind)到属性:

<Controls:DirectorySelect
Directory="{Binding Directory}"
IncludeSubdirectories="{Binding WatchSubDirs}"/>

“Directory”是一个工作正常的字符串属性。我以相同的方式绑定(bind)到它们,但我无法使 bool 工作。

我哪里错了?

最佳答案

您可以尝试将与用户控件的绑定(bind)更改为元素绑定(bind)。在你这样做之前一定要给你的 userControl 一个名字。

然后改变:

     IsChecked="{Binding Path=IncludeSubdirectories, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">

像这样:

     IsChecked="{Binding Path=IncludeSubdirectories, ElementName="<UserControlName>", Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">

您可以执行的另一项健全性检查是确保 IncludeSubdirectoriesProperty 的类型所有者是正确的。

关于c# - UserControl 中的 DependencyProperty bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8072495/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com