2013-07-11 75 views
0

OK,這裏是我的情況:通過發件人訪問GUI項目?

  • 我有使用綁定
  • ListBox中的每一項都包含了一些的TextBlocks,一個進度條和按鈕
  • (與項目列表中的類)填充一個列表框
  • 點擊該按鈕後,適當的事件被觸發,我能夠檢索「對象」,通過((Button)sender).DataContext

被點擊的問題:

  • 點擊該按鈕後,我怎麼訪問該項目的UI控件被點擊和如將進度值「綁定」到「所選」項目的進度條?

回答

1

如果你有機會到按鈕(通過強制sender),那麼你可以通過瀏覽視覺樹(通過使用button.Parent,那麼孩子檢索按鈕的父訪問其他控件,等等上...)。但是,這是一個壞主意,這樣做,因爲它創建你的用戶界面和代碼(當您更改UI,你必須改變的代碼)之間有很強的相關性。

相反,使用數據綁定設置控件的屬性,只是從修改的代碼模型後面。基本上,你已經知道如何使用((Button)sender).DataContext檢索模型,你爲什麼不綁定進度條到該對象的屬性?

如果您不能修改模型或不想就加一個「進步」屬性,你可以使用包裝:

public class Wrapper : INotifyPropertyChanged 
{ 
    public MyModel Model { get; set; } 
    public double Progress { get; set; } 
    // etc... 
} 

然後就這些對象綁定到你的列表框。

+0

真的很有趣的建議。基本上,你讓我在「如果你不希望它添加一個‘進度’財產」的一部分......我要看看我怎麼可能使這項工作用包裝材料,如你所說! :-) –