簡體   English   中英

綁定到網格WPF的Name屬性

[英]Bind to a Name property of a grid WPF

所以我有我的xaml:

<Grid 
       Name="{x:Static enums:DropTargetNames.ItemsGridView}" />

因此, enums是名稱空間, DropTargetNames是靜態類,而MasterProgramGridView是靜態字符串。 這個想法是為了防止在編碼時出現錯誤類型,因為這些錯誤會在多個地方使用。

不幸的是,C#WPF不允許這樣做。 那么,我是否可以像這樣設置另一個屬性以用作網格的標識符?

我確定網格的代碼是這樣的:

var grid = dropInfo.Target as Grid;
var name = grid.Name;

switch (name) {

}

在開關中,您使用DropTargetNames.ItemsGridView或其他靜態字符串。

您可以嘗試通過AttachedProperty間接設置它,比如說在ABC類中

可以說附加屬性是這樣聲明的

    public static readonly DependencyProperty DynamicNameProperty = DependencyProperty.RegisterAttached(
        "DynamicName", typeof(object), typeof(FrameworkElement), new PropertyMetadata(default(object), PropertyChangedCallback));

    private static void PropertyChangedCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs eventArgs)
    {
        FrameworkElement frameworkElement = (FrameworkElement)dependencyObject;
        if (eventArgs.NewValue != null)
        {
            frameworkElement.Name = eventArgs.NewValue.ToString();
        }
    }

在XAML中,您可以這樣設置名稱

<Grid 
   prefix:ABC:DynamicName="{x:Static enums:DropTargetNames.ItemsGridView}" />

所以最后,我接受了有關tag的評論。 那正是我所需要的:

<Grid Tag="{x:Static enums:DropTargetNames.ItemsGridView}">

</Grid>

C#:

var grid = dropInfo.Target as Grid;

switch (grid.Tag as string)
{

}

都好!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM