2014-04-11 62 views
0

Whatsup,我是wpf技術的新手,我很難知道如何在用戶屬性發生變化時彈出消息。 (除此之外,代碼完美)。Wpf - 最好註冊屬性更改

*我的目標是註冊一個exsisting事件來照顧它,而不是在MyData類中通過重寫'Set'來完成它。 XAML:

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:WpfApplication1" 
     Title="MainWindow" Height="350" Width="525"> 
    <StackPanel x:Name="MyGrid1"> 
     <StackPanel.Resources> 
      <local:MyData x:Key="mySource1" 
         User="Arik2" /> 
     </StackPanel.Resources> 
     <TextBox x:Name="target1" 
       Grid.Row="1" 
       Grid.Column="2" 
       Text="{Binding Source={StaticResource mySource1}, Path=User,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 
     <TextBox x:Name="target2" 
       Grid.Row="2" 
       Grid.Column="2" 
       Text="{Binding Source={StaticResource mySource1}, Path=User,Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" /> 
    </StackPanel> 
</Window> 

那是我的應用程序代碼:

namespace WpfApplication1 
{ 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 
    } 
    public class MyData 
    { 
     public string User { get; set; } 
    } 
} 

謝謝大家。

回答

1

對於文本框,您可以隨時在textchanged事件處理程序中打開消息窗口。

例如

<TextBox TextChanged="txt_TextChanged" > 

Private Sub txt_TextChanged(sender As System.Object, e As System.Windows.Controls.TextChangedEventArgs) 
     MessageBox.Show("Value changed") 
    End Sub 

注意這可能是你在找什麼,但觸發關在箱子改變不是物業本身的文本。如果您使用驗證和輸入無效數據等任何內容,該事件將會觸發,但文本不會更改。

我想你可以使用sourcechanged事件來得到你想要的。

+0

這是完美的,但無論如何使用綁定對象來做到這一點?我試圖學習所有的方法。 –

+0

什麼是sourcechanged事件?我可以在哪裏註冊? –

+0

像我提到的那樣嘗試sourceupdated事件。您必須小心地在綁定上做這種事情,因爲您可能不希望在通過代碼更改值時打開消息框。 – kenjara