加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 以编程方式设置WPF元素的Name属性

发布时间:2020-12-16 01:42:41 所属栏目:百科 来源:网络整理
导读:我正在使用WiPFlash为我们办公室开发的 WPF应用程序编写测试.为了做到这一点,我不得不为几个WPF组件添加名称属性,直到现在还没有它们. 我尝试为运行时创建的一组对象设置唯一名称时遇到了阻塞. XAML看起来像: UserControl x:Class="Atlas.Activities.Ribbon
我正在使用WiPFlash为我们办公室开发的 WPF应用程序编写测试.为了做到这一点,我不得不为几个WPF组件添加名称属性,直到现在还没有它们.

我尝试为运行时创建的一组对象设置唯一名称时遇到了阻塞. XAML看起来像:

<UserControl x:Class="Atlas.Activities.RibbonActivity.RibbonActivityView" 
                     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                     xmlns:ribbon="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary" 
                     xmlns:RoutedMessaging="clr-namespace:Caliburn.PresentationFramework.RoutedMessaging;assembly=Caliburn.PresentationFramework" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300">

<ribbon:RibbonButton Style="{StaticResource RibbonButtonView}" Name="RibbonActivity">
    <ribbon:RibbonButton.ContextMenu>
        <ribbon:RibbonContextMenu>
            <ribbon:RibbonMenuItem x:Name="Modify" Header="Modify..." RoutedMessaging:Message.Attach="[Event Click] = [Action Modify]" />
            <ribbon:RibbonMenuItem x:Name="Hide" Header="Hide" RoutedMessaging:Message.Attach="[Event Click] = [Action Hide]" />
            <ribbon:RibbonMenuItem x:Name="Delete" Header="Delete" RoutedMessaging:Message.Attach="[Event Click] = [Action Delete]" />
        </ribbon:RibbonContextMenu>
    </ribbon:RibbonButton.ContextMenu>
</ribbon:RibbonButton>

构造函数使用以下方法设置主题:

WithSubject(activity);

这是从Caliburn.PresentationFramework.Screens固有的.

所以我想要做的是将每个控件的名称设置为主题(活动)中的名称字段.

任何人都可以帮助我,或者至少让我知道这是否可行,

提前致谢,

克利.

解决方法

根据你想要实现的例子

Style=”{StaticResource RibbonButtonView}” Name=”{Binding Subject.name}”>

你不能在XAML中这样做.编译XAML并在编译过程中使用name元素,以便您可以访问代码隐藏中的XAML元素.当XAML编译器将XML元素转换为C#代码时,它使用Name属性作为分部类中变量的名称.它不是可由WPF绑定系统在运行时设置的属性. Check out this great SO question有关此行为的更多详细信息.

如果你想动态提供控件名称,你需要在代码隐藏中创建它们,但我不知道这是否会实现你想要做的事情,因为我不知道你在使用什么名称属性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读