如何解决使用c#来重命名wpf中的控件
| 如果我在Microsoft Blend 4中向该控件添加了没有设置名称的控件,而我想为其设置名称并在c#中使用它,怎么办? 例子我在布局中使用Blend添加了按钮,但没有给它命名 我想使用x#中不带``0''的c#给它起一个名字解决方法
在您的位置,我会给LogicalTreeHelper.GetChildren(这个)一个机会。它将子级的集合返回给Window(这是Window的句柄)参考MSDN
从那里您可以尝试找到您的控件。
但是我认为尝试重写控件(或查找其他组件)比较容易,这样您就可以在子代上使用名称。从一开始就是您的问题。
希望能帮助到你
戈尔根
,首先,为什么您要在世界上这样做?
如果未设置名称,则没有访问控件的简便方法。但是,您可以通过与其他控件或传递引用的事件(例如已加载的事件)之间的关系来访问控件。
例如
private void Menu_Loaded(object sender,RoutedEventArgs e)
{
(sender as Menu).Name = \"MainMenu\";
}
或者,如果该控件是另一个控件的子级:
(ControlStack.Children[0] as Menu).Name = \"MainMenu\";
但是我想不出有什么可以实现的有用...
您可能只想获取可以轻松存储在类成员中的对象的引用。在某些情况下,您还可以使用资源来分解XAML。
例如
<local:SomethingIWouldLikeToReference x:Key=\"SomethingIWouldLikeToReference\"/>
<local:UserControl x:Name=\"userControl\">
<Stuff>
<MoreStuff Content=\"{StaticResource SomethingIWouldLikeToReference}\"/>
</Stuff>
</local:UserControl>
public MainWindow()
{
InitializeComponent();
MyReference = FindResource(\"SomethingIWouldLikeToReference\") as SomethingIWouldLikeToReference;
}
,如果我具有ListView控件并且想要使用它来添加项目和删除项目,则为示例
设为私有ListView并对其进行初始化
ListView temp_control_List = new ListView()
然后从Blend中创建已加载的Eventhandler,以便将其放入VS中,然后
private void ListView_Loaded(object sender,System.Windows.RoutedEventArgs e)
{
temp_control_List = sender as ListView;
}
现在您可以在temp_control_List的列表视图控件中添加和从列表视图中删除
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。