Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用c在wpf中重命名控件#_C#_Wpf - Fatal编程技术网

C# 使用c在wpf中重命名控件#

C# 使用c在wpf中重命名控件#,c#,wpf,C#,Wpf,如果我在MicrosoftBlend 4中向该控件添加了未设置名称的控件,并且希望将其设置为名称并在c#how中使用它? 示例:我在布局中添加了使用Blend的按钮,但没有给它命名 我想在xaml中使用c#而不是x:name=”“给它起个名字首先,你到底为什么要这么做 如果不设置名称,则无法轻松访问控件。但是,您可以通过与传递引用的其他控件或事件(例如加载的事件)的关系来访问该控件 e、 g 或者,如果该控件是另一个控件的子控件: (ControlStack.Children[0] as Men

如果我在MicrosoftBlend 4中向该控件添加了未设置名称的控件,并且希望将其设置为名称并在c#how中使用它? 示例:我在布局中添加了使用Blend的按钮,但没有给它命名
我想在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;
        }