C# 使用c在wpf中重命名控件#
如果我在MicrosoftBlend 4中向该控件添加了未设置名称的控件,并且希望将其设置为名称并在c#how中使用它? 示例:我在布局中添加了使用Blend的按钮,但没有给它命名C# 使用c在wpf中重命名控件#,c#,wpf,C#,Wpf,如果我在MicrosoftBlend 4中向该控件添加了未设置名称的控件,并且希望将其设置为名称并在c#how中使用它? 示例:我在布局中添加了使用Blend的按钮,但没有给它命名 我想在xaml中使用c#而不是x:name=”“给它起个名字首先,你到底为什么要这么做 如果不设置名称,则无法轻松访问控件。但是,您可以通过与传递引用的其他控件或事件(例如加载的事件)的关系来访问该控件 e、 g 或者,如果该控件是另一个控件的子控件: (ControlStack.Children[0] as Men
我想在xaml中使用c#而不是
x:name=”“
给它起个名字首先,你到底为什么要这么做
如果不设置名称,则无法轻松访问控件。但是,您可以通过与传递引用的其他控件或事件(例如加载的事件)的关系来访问该控件
e、 g
或者,如果该控件是另一个控件的子控件:
(ControlStack.Children[0] as Menu).Name = "MainMenu";
但是我想不出有什么有用的东西可以通过这个
您可能只想获得一个对象的引用,该对象可以轻松地存储在类成员中。在某些情况下,还可以使用资源分割XAML
e、 g
在你的位置上,我会给LogicalTreeHelper.GetChildren(这个)一个机会。它将子对象集合返回到窗口(这是窗口句柄)引用
从那里你可以试着找到你的控制权 但是我认为重写控件(或者寻找其他组件)更容易,这样就可以在子控件上有名称。这从一开始就是你的问题 希望能有所帮助
Gorgen示例,如果我有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;
}
现在你可以从临时控件列表中添加和删除列表视图控件了你可以具体一点,为你的问题添加更多细节吗?你有没有任何令人信服的理由不给控件命名?是的,我添加了可扩展控件,我从codeproject获得它,只有当它的所有子项都没有名字时,我才能编译它
<local:UserControl x:Name="userControl">
<Stuff>
<MoreStuff Content="{StaticResource SomethingIWouldLikeToReference}"/>
</Stuff>
</local:UserControl>
public MainWindow()
{
InitializeComponent();
MyReference = FindResource("SomethingIWouldLikeToReference") as SomethingIWouldLikeToReference;
}
ListView temp_control_List = new ListView()
private void ListView_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
temp_control_List = sender as ListView;
}