我这里有一小段代码。我想要实现的是Command属性绑定到Class 1,而IsEnabled属性绑定到Class 2。
<MenuItem Header="A_nmelden..." Command="{Binding ShowLoginCommand}" IsEnabled="{Binding Source={x:Static UserManagementAdapter.LogOnIsEnabled}}"/>
但是在尝试访问UserManagmentAdapter时似乎存在问题。 UserManagmentAdapter类与包含此MenuItem控件的项目不在同一项目中。所以我收到了错误
&#34; UserManagmentAdapter&#34; Windows演示文稿中不支持 基金会(WPF)项目
我要访问的属性:
private bool logOnIsEnabled;
public bool LogOnIsEnabled
{
get { return this.logOnIsEnabled; }
set { this.logOnIsEnabled = value; OnPropertyChanged("LogOnIsEnabled"); }
}
private bool logOffIsEnabled;
public bool LogOffIsEnabled
{
get { return this.logOffIsEnabled; }
set { this.logOffIsEnabled = value; OnPropertyChanged("LogOffIsEnabled"); }
}
我的第2课:
namespace ZF.UserManagement
{
[ExportAdapter(nameof(UserManagementAdapter))]
public class UserManagementAdapter : AdapterBase, IMultiValueConverter
{...}
}
我希望我已经说清楚了。 任何人都知道如何访问UserManagmentAdapter?
答案 0 :(得分:1)
您需要在XAML中添加名称空间声明:
<MenuItem xmlns:local="clr-namespace:YourNamespace;assembly=YourAssembly"
Header="A_nmelden..." Command="{Binding ShowLoginCommand}" IsEnabled="{Binding Source={x:Static local:UserManagmentAdapter.LogOnIsEnabled}}"/>
...其中“YourNamespace”是定义UserManagmentAdapter
类的命名空间,“YourAssembly”是程序集的名称。
如果您的WPF应用程序项目中定义了UserManagmentAdapter
类,即不在单独的程序集中,则应删除;assembly=YourAssembly
部分:
xmlns:local="clr-namespace:ZF.UserManagement"
答案 1 :(得分:0)
为什么不制作ViewModel的Class1
和Class2
属性,然后访问XAML中的属性:
代码
public class ViewModel
{
public Class1 class1 { get; set; }
public Class2 class2 { get; set; }
}
<强> XAML 强>
<MenuItem Header="A_nmelden..." Command="{Binding class1.ShowLoginCommand}" IsEnabled="{Binding class2.LogOnIsEnabled}"/>