gpt4 book ai didi

wpf 文本框文本绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 15:46:13 26 4
gpt4 key购买 nike

我正在尝试将文本框的文本绑定(bind)到我的类中的属性,但它不起作用,我正在后面的代码中编辑属性,但我没有在文本框中看到字符串
这是类,我要绑定(bind)的属性称为 songFolder。

public class song :  INotifyPropertyChanged
{
public string title {get; set; }
public string artist { get; set; }
public string path { get; set; }
public static string folder;
public string songsFolder { get { return folder; } set { folder = value; NotifyPropertyChanged("songsFolder"); } }

public event PropertyChangedEventHandler PropertyChanged;

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

public song()
{

}

public song(string title, string artist, string path)
{
this.title = title;
this.artist = artist;
this.path = path;
}

}

和 xaml,包含我要绑定(bind)的资源和文本框
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="Song Filler" Height="455" Width="525">
<Window.Resources>
<local:song x:Key="song"/>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<TextBox Name="browseBox" Text="{Binding Source={StaticResource ResourceKey=song}, Path=songsFolder, Mode=TwoWay}" Grid.Column="0"></TextBox>
<Button Grid.Column="1" Width="auto" Click="Browse">browse</Button>
</Grid>

- - - - - - - 更新 - - - - - - - -
我在窗口的ctor中添加了下一行:
BrowseBox.DataContext=new song()

在调试时,我看到属性正在更改,但文本框中的文本没有。

最佳答案

传递给 NotifyPropertyChanged 事件的字符串应该与属性本身的名称相同。

public string songsFolder 
{
get
{
return folder;
}
set
{
folder = value;
NotifyPropertyChanged("songsFolder");
}
}

还,

尝试将 UpdateSourceTrigger="PropertyChanged"添加到 textBox 的绑定(bind)中
<TextBox Name="browseBox" Text="{Binding Source={StaticResource ResourceKey=song}, Path=songsFolder, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Grid.Column="0"></TextBox>

编辑:也许 DataContext 没有正确设置。你也可以试试这个方法(没有静态键)

代码后面,在窗口的 Ctor 内:
browseBox.DataContext = new song();

然后,将 textBox 结果更新为:
<TextBox Name="browseBox" Text="{Binding Path=songsFolder, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Grid.Column="0"></TextBox>

关于wpf 文本框文本绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13733849/

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