我正在制作一个WPF项目并试图坚持使用MVVM模式。它接近20 UserControl
s,每个约10控件我想能够改变属性。对于每一个,我需要能够更改Visibility
和IsEnabled
(框架元素属性),然后更改内容/文本。每个控件至少有3个属性。在所有UserControl
s,这使得600属性...MVVM太多属性
我玩弄了ControlProperties
类的想法,并让每个控件绑定到适当的实例的成员变量/属性。 (例如)
//Code-behind
public class ControlProperties
{
private bool m_isEnabled;
public property IsEnabled
{
get { return m_isEnabled; }
set { m_isEnabled = value; notifyPropertyChanged("IsEnabled"); }
}
ControlProperties() { m_isEnabled = false; }
}
public ControlProperties controlOne;
//XAML
<Button IsEnabled={Binding controlOne.IsEnabled}/>
有没有办法来每个控件的属性2+结合成东西比使用上述类的可重用性/更容易实现,其他的? (每个控件需要它自己的“实例”,它们没有共享相同的值)上述方法的一个缺点是每个控件都必须单独绑定想要的属性。我必须首先...但仍然。
如果我遗漏任何东西或对某些事物不清楚,请提问。
从你XAML的例子是你的datacontext controlProperties? 如果是这样,乍一看,我会建议反对它 –
'Button'所在的'UserControl'将其'DataContext'设置为我的ViewModel。 –
不确切知道控件的含义。我从来没有使用过CustomControls,只有Controls;如果您没有特定的XAML控件来绑定这两个属性,我将显式绑定所有内容 如果两个待绑定的属性可以封装在“通用”控件中,那么该控件就不需要穿越障碍 –