gpt4 book ai didi

c# - Wpf 绑定(bind)困惑

转载 作者:行者123 更新时间:2023-12-03 10:54:31 24 4
gpt4 key购买 nike

我正在尝试学习 MVVM。我已经理解了这个概念,但是,我对绑定(bind)感到困惑。我不确定在哪里绑定(bind)我的 Fill 属性。请帮忙。 Tqvm 进阶。

查看 - 名称:MainScreen.xaml

<Path Fill="{Binding mainScreenClass, Converter={StaticResource colorConverter}}"/>

在代码后面
DataContext = new vmMainScreen();

ViewModel - 名称:vmMainScreen
public ICommand cmdMouseEnterNav { get; private set; }
public mMainScreen mainScreenClass { get; set; }
public vmMainScreen()
{
mainScreenClass = new mMainScreen();
mainScreenClass.propNaviconFill = new SolidColorBrush(Colors.White);
naviconMouseEventChecker();
}

private void naviconMouseEventChecker()
{
cmdMouseEnterNav = new SimpleCommand
{
ExecuteDelegate = x => mainScreenClass.propNaviconFill = (SolidColorBrush)(new BrushConverter().ConvertFrom("#c5a02b"))
};
}

模型 - 名称:mMainScreen
public class mMainScreen : INotifyPropertyChanged
{
private Brush _NaviconFill = new SolidColorBrush(Colors.White);
public Brush propNaviconFill
{
get
{
return this._NaviconFill;
}
set
{
this._NaviconFill = value;
NotifyPropertyChanged("propNaviconFill");
}
}

public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}

我知道当我在 colorConverter 上设置断点时,我正在上课。不是 propNaviconFill 的属性。如果我在 ViewModel 上使用 Brush 类创建另一个属性并将其绑定(bind)到 Fill,则没有问题。但这意味着我没有遵循 MVVM 的正确结构。再次感谢。

最佳答案

您应该绑定(bind)到 View 模型的属性。

<Path Fill="{Binding propNaviconFill, Converter={StaticResource colorConverter}}"/>

使用实现 INotifyPropertyChanged 的 View 模型作为 View 的数据上下文。
DataContext = new mMainScreen();

如果你真的想用 vmMainScreen作为您的数据上下文,然后 vmMainScreen应该执行 INotifyPropertyChanged在那里,你应该研究如何 NotifyPropertyChanged用于通知 View View 模型属性已更改。

关于c# - Wpf 绑定(bind)困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44665664/

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