gpt4 book ai didi

c# - 代码隐藏中的数据绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-03 21:53:11 25 4
gpt4 key购买 nike

我想在类实例和两个 WPF 文本框之间设置绑定(bind)。尽管如此,文本框并没有改变它们的状态,我也不知道我做错了什么。

XAML

<DockPanel>
<TextBlock Style="{StaticResource caption}">Testing System</TextBlock>
<TextBlock DockPanel.Dock="Left" x:Name="txt1" Text="DC"/>
<TextBlock DockPanel.Dock="Right" x:Name="txt2" Text="PD"/>
<Button Height="20" Width="100" Click="clickBinding">Bind</Button>
<Button Height="20" Width="100" Click="clickChangeBinding">Change Status</Button>
</DockPanel>

主窗口.xaml.cs

private ADSbinding myADS = new ADSbinding();
private void clickBinding(object sender, RoutedEventArgs e)
{
Binding b1, b2;

b1 = new Binding();
b2 = new Binding();
b1.Source = myADS.DeviceConfigured;
b2.Source = myADS.ProcessingData;


b1.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
b2.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;

BindingOperations.SetBinding(txt1, TextBlock.TextProperty, b1);
BindingOperations.SetBinding(txt2, TextBlock.TextProperty, b2);
}

private void clickChangeBinding(object sender, RoutedEventArgs e)
{
myADS.changedata();
}

类:

public class ADSbinding : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;

private string deviceConfigured = "false";
private string processingData = "false";

public ADSbinding()
{
ProcessingData = "true";
}

// Get-Set methods
public string DeviceConfigured
{
get { return deviceConfigured; }
set
{
deviceConfigured = value;
Changed("DeviceConfigured");
}
}
public string ProcessingData
{
get { return processingData; }
set
{
processingData = value;
Changed("ProcessingData");
}
}

private void Changed(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}

public void changedata()
{
DeviceConfigured = "change";
ProcessingData = "change";
}
}

当按下“clickBinding”时,状态会改变,当“clickChangeBinding”时,状态会保持不变,再次单击“clickBinding”时,状态会改变。这是一次非常直接的尝试,我无法弄清楚问题出在哪里。有人吗?

最佳答案

当您创建绑定(bind)时,您将 Source 设置为对象的属性,而不是对象本身。您应该在 Binding 构造函数中指定属性名称,然后将源设置为您的对象:

    b1 = new Binding("DeviceConfigured");
b2 = new Binding("ProcessingData");
b1.Source = myADS;
b2.Source = myADS;

关于c# - 代码隐藏中的数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13501306/

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