[英]Different values in different instances of the same usercontrol in WPF
我正在為應用程序創建地圖,我需要用兩種不同的方式來展示它。 一個小型地圖和一個常規地圖,它們都由一個單獨的UserControl
。 我的問題是我試圖找到一種平滑的方式來顯示帶有區域名稱的常規尺寸地圖,而不顯示具有區域名稱的迷你地圖。 我一直在研究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中擁有所有帶有正確標簽的TextBlocks,並且如果MiniMap屬性設置為true,當前正在嘗試刪除Text屬性,如果它為false,則將它們保留。 目前,我只是在地圖標題上進行操作,但是一旦我可以使用它,就可以遍歷它們。
if (MiniMap == true)
{
this.Title.Text = "";
}
然后,我在不同的View中實例化此UserControl兩次,其中MiniMap屬性在一種情況下設置為true,在另一種情況下設置為false。
<map:myMap x:Name="myMap" Visibility="Collapsed" MiniMap="False"/>
<map:myMap x:Name="miniMap" Visibility="Visible" MiniMap="True"/>
這里的想法是,一旦單擊Map按鈕,就會彈出大地圖(將Visibility
更改為Visible
),並且由於在這種情況下MiniMap屬性設置為false,因此TextBlock應該為空,或者最好刪除-那是另一個問題。 我在這里的問題是,無論我做什么,我的UserControl
兩個實例似乎總是具有相同的MiniMap
屬性值,所以我只能在兩種情況下都打開TextBlock,或者在兩種情況下都關閉。 有誰知道如何使它起作用,或者有其他更適合我的問題的解決方案?
嘗試使用屬性更改的回調
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 = "";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.