WPF中同一用户控件的不同实例中的不同值

Different values in different instances of the same usercontrol in WPF

我正在为应用程序创建地图,我需要以两种不同的方式呈现它。一张mini-map和一张正则图,都是一张UserControl。我的问题是,我正在尝试找到一种平滑的方式来显示带有区域名称的 regular-sized 地图,而没有显示 mini-map 地图。我一直在研究 DependencyProperties 作为一种可能的方法,或者至少是一种说明我的思路的方法。我目前所拥有的是这个。

    public bool MiniMap
    {
        get { return (bool)GetValue(MiniMapProperty); }
        set { SetValue(MiniMapProperty, value); }
    }

    public static DependencyProperty MiniMapProperty =
        DependencyProperty.Register("MiniMap", 
        typeof(bool), 
        typeof(myMap), 
        new PropertyMetadata());

然后我在 UserControl 中拥有所有带有正确标签的 TextBlock,如果 MiniMap 属性 设置为 true,我目前正在尝试删除文本 属性,如果这是错误的。目前我只是在地图的标题上这样做,但是一旦我开始使用它,我就可以循环遍历它们。

    if (MiniMap == true)
        {
            this.Title.Text = "";
        }

然后我在不同的视图中实例化此 UserControl 两次,一次将 MiniMap 属性 设置为 true,另一次设置为 false。

    <map:myMap x:Name="myMap" Visibility="Collapsed" MiniMap="False"/>
    <map:myMap x:Name="miniMap" Visibility="Visible" MiniMap="True"/>

这里的想法是,一旦你点击地图按钮,就会出现大地图(将 Visibility 更改为 Visible)并且由于 MiniMap 属性 设置为 false在这种情况下,那么 TextBlock(s) 应该为空,或者最好删除 - 但这是一个不同的问题。我的问题是,无论我做什么,我的 UserControl 的两个实例似乎总是对 MiniMap 属性 具有相同的值,所以我只能打开 TextBlock两种情况,或两者均关闭。任何人都知道我如何才能让它工作,或者有其他更适合我的问题的解决方案?

尝试使用 propertychanged 回调

public static DependencyProperty MiniMapProperty =
    DependencyProperty.Register("MiniMap", 
    typeof(bool), 
    typeof(myMap), 
    new PropertyMetadata(new PropertyChangedCallback(OnMiniMapPropertyChanged)));


private static void OnMiniMapPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
        {
            var control = sender as myMap;
            if (control != null && (bool)e.NewValue == true)
                control.Title.Text = "";
        }