2012-10-04 104 views
0

我想做一個簡單的項目,我有一個類,其中一個屬性是一個結構。這個結構包含一個值。所以我想將一個標籤內容綁定到這個值。我怎樣才能做到這一點?複雜綁定

謝謝!

+1

你嘗試綁定到'PropertyName.ValueName'嗎? '

回答

0

您需要聲明一個DependencyProperty以將您的值暴露給WPF系統。請參閱Dependecy Properties overview。可能值得在類上聲明依賴屬性並從結構中提取值。

如果您現有的數據對象僅僅用於您的後端數據(或模型),您可能還想考慮在此之前使用另一個類來暴露給WPF,這個新類通常稱爲ViewModel。看看Josh Smith MVVM on MSDN有一個很好的解釋。

1

爲了增加上述AkSki的回答......

如果使用雙向綁定(讀寫)或單向到源極(只寫)綁定到一個結構,它不會按照您的預期工作。

結構始終是按值傳遞的,它們不是通過引用傳遞的。這意味着當WPF在幕後傳遞它們時,它們將被作爲新值複製,而不是通過它們的引用傳遞。這意味着WPF將寫入副本,而不是原始結構。

執行雙向或單向源代碼綁定的唯一方法是綁定到類。

如果您只需要將此結構值顯示爲只讀,請按照上面的AlSki的回答。

0

它只是工作。這裏有一個例子:

的觀點:

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 

     <Label Content="{Binding FinalDestination.X}"/> 
     <Label Grid.Row="1" Content="{Binding FinalDestination.Y}"/> 
    </Grid> 
</Window> 

視圖模型:

using System.Windows; 

namespace WpfApplication1 
{ 
    public class ViewModel 
    { 
     public Point FinalDestination { get; private set; } 

     public ViewModel() 
     { 
      FinalDestination = new Point(8, 8); 
     } 
    } 
} 

視圖的代碼隱藏:

namespace WpfApplication1 
{ 
    public partial class MainWindow 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 

      DataContext = new ViewModel(); 
     } 
    } 
} 

注:我已經建立了這個快速在Visual Studio 2012在.NET 4.5上,但我很確定它適用於舊技術