WPF 在代码隐藏中设置一个 TextBox 属性
WPF Set a TextBox property in code-behind
您好,我想通过隐藏代码设置文本框的文本 属性。目前我使用 XAML:
<TextBox x:Name="txtFilter" Text="{Binding FiltroFunzioni, Mode=OneWayToSource}" Grid.Row="0" />
作为测试,我这样做了:
Binding b = new Binding();
b.Mode = BindingMode.OneWayToSource;
b.Path = new PropertyPath("Text"); //??
b.Source = PageViewModel.FiltroFunzioni;
BindingOperations.SetBinding(txtFilter, TextBlock.TextProperty, b);
变量“FiltroFunzioni”是一个定义为 属性:
的字符串
private string _filtroFunzioni = "";
public string FiltroFunzioni
{
get { return _filtroFunzioni; }
set
{
_filtroFunzioni = value;
RaisePropertyChanged("FiltroFunzioni");
_functionsView.Refresh();
}
}
基本上我不知道应该为PropertyPath设置什么样的值。有什么想法吗?
此处不需要 PropertyPath。如果您只是删除它,您的绑定应该有效。
也就是说,您应该尽可能绑定 XAML。
如果您的问题是对 FiltroFunzioni
的更改不会更新您的文本框,那是因为您的绑定被明确声明为 OneWayToSource: 这意味着更改 UI 会更改源,但会更改来源不会更改 UI。如果这不是您想要的,请将模式设置为其他内容,例如“TwoWay” - 然后更改源更改 UI,更改 UI 更改源。
编辑:
如果您真的想从您的 ViewModel 进行绑定而不是仅仅使用 XAML,双向绑定出于某种原因需要在通过 C# 进行绑定时使用 Path。以下任一解决方案都有效:
b.Source = FiltroFunzioni;
b.Path = new PropertyPath(".");
b.Source = this;
b.Path = new PropertyPath("FiltroFunzioni");
请注意,使用 TwoWay 绑定时,您必须通过在 XAML 中设置 TextBox.Text
属性 来初始化 FiltroFunzioni
,或者在之后设置 FiltroFunzioni
绑定已初始化。否则,WPF 将立即从 TextBox 中的(默认为空)文本覆盖它。
您好,我想通过隐藏代码设置文本框的文本 属性。目前我使用 XAML:
<TextBox x:Name="txtFilter" Text="{Binding FiltroFunzioni, Mode=OneWayToSource}" Grid.Row="0" />
作为测试,我这样做了:
Binding b = new Binding();
b.Mode = BindingMode.OneWayToSource;
b.Path = new PropertyPath("Text"); //??
b.Source = PageViewModel.FiltroFunzioni;
BindingOperations.SetBinding(txtFilter, TextBlock.TextProperty, b);
变量“FiltroFunzioni”是一个定义为 属性:
的字符串private string _filtroFunzioni = "";
public string FiltroFunzioni
{
get { return _filtroFunzioni; }
set
{
_filtroFunzioni = value;
RaisePropertyChanged("FiltroFunzioni");
_functionsView.Refresh();
}
}
基本上我不知道应该为PropertyPath设置什么样的值。有什么想法吗?
此处不需要 PropertyPath。如果您只是删除它,您的绑定应该有效。
也就是说,您应该尽可能绑定 XAML。
如果您的问题是对 FiltroFunzioni
的更改不会更新您的文本框,那是因为您的绑定被明确声明为 OneWayToSource: 这意味着更改 UI 会更改源,但会更改来源不会更改 UI。如果这不是您想要的,请将模式设置为其他内容,例如“TwoWay” - 然后更改源更改 UI,更改 UI 更改源。
编辑:
如果您真的想从您的 ViewModel 进行绑定而不是仅仅使用 XAML,双向绑定出于某种原因需要在通过 C# 进行绑定时使用 Path。以下任一解决方案都有效:
b.Source = FiltroFunzioni;
b.Path = new PropertyPath(".");
b.Source = this;
b.Path = new PropertyPath("FiltroFunzioni");
请注意,使用 TwoWay 绑定时,您必须通过在 XAML 中设置 TextBox.Text
属性 来初始化 FiltroFunzioni
,或者在之后设置 FiltroFunzioni
绑定已初始化。否则,WPF 将立即从 TextBox 中的(默认为空)文本覆盖它。