- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将控件名称传递给安全对象中的一个方法,该方法返回 IsEnabled 属性的 bool 值,另一个方法返回其可见性(折叠、隐藏或可见)。出于许可目的,必须检查这两者。
我曾尝试使用 ObjectDataProvider,但所有示例仅显示来自文本框的用户输入参数。我特别需要将控件名称传递给基于按钮的 x:Name 属性的方法。
处理这个问题的最简单和最有效的方法是什么。提前致谢。
更新:我正在尝试使用转换器,这是我想出的转换方法:
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values != null)
{
DataTable tblPermissions = (DataTable)values[0];
string sFunctionName = values[1].ToString();
DataRow[] rows = tblPermissions.Select("fun_name = '" + sFunctionName + "'");
if ((bool)rows[0]["fun_enable"])
return true;
else
return false;
}
return string.Empty;
}
下面是xaml:
<Button.IsEnabled>
<MultiBinding Converter="{StaticResource IsFunctionEnabledConverter}">
<Binding ElementName="{StaticResource PermissionsTable}" />
<Binding ElementName="btnSave" Path="Name" />
</MultiBinding>
</Button.IsEnabled>
最佳答案
您可以使用 {Binding RelativeSource={RelativeSource Self}, Converter={StaticResource MyConverter}}
编写一个 IValueConverter 来调用方法并传入控件本身。然后,在 Convert 方法中,您可以将值转换为 Control 并访问 Control 的 Name 属性以传递给安全方法。通过检查 targetType,您可以确定是输出 bool 值(对于 IsEnabled)还是 Visibility 枚举。
***更新
我假设与您的转换器绑定(bind)一起使用的“PermissionTable”资源实际上是 DataTable,但您试图将其用作字符串以按名称将元素标识为绑定(bind)源。尝试使用 Source="{StaticResource PermissionsTable}"
来传递 DataTable 资源本身。
关于c# - 使用其 x :Name as a parameter in a method in the code-behind 绑定(bind)按钮 IsEnabled/Visibility 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4325020/
我是一名优秀的程序员,十分优秀!