gpt4 book ai didi

c# - 使用其 x :Name as a parameter in a method in the code-behind 绑定(bind)按钮 IsEnabled/Visibility 属性

转载 作者:行者123 更新时间:2023-11-30 17:20:08 25 4
gpt4 key购买 nike

我需要将控件名称传递给安全对象中的一个方法,该方法返回 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/

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