1

テキストボックス、チェックボックス、ボタンを備えたフォームがあります。TextBox と Button は、.xml で定義された XmlDataProvider を介して xml ファイルにバインドされますGrid.Datacontexttextbox.Textボタンをクリックすると、 のテキストが変更されます。

ここで問題が発生します。チェックボックスをオン/オフにすると、TextBox.Textプロパティが からの値にリセットされますXmlDataProvider

チェックボックス ボックスが DataProvider からデータをリロードしないようにするにはどうすればよいですか? チェックボックスがこのように動作するのはなぜですか?

ComboBoxこの動作は、DataPickerや などの他のコントロールにも適用されます。RadioButton

デモ アプリケーションのスクリーンショット、以下のコード

問題を説明するために簡単な例を作成しました。

MainWindow.xaml:

<Window x:Class="submitbehavior.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="150" Width="250">
    <Grid>
        <Grid.DataContext>
            <XmlDataProvider x:Name="DataProvider" XPath="/" Source="datacontext.xml"/>
        </Grid.DataContext>
        <StackPanel>
            <TextBox Name="MyTextBox" Text="{Binding XPath=/Contact/Lastname}" Width="100" Height="30" VerticalAlignment="Top" HorizontalAlignment="Left"/>
            <CheckBox IsChecked="{Binding XPath=/Contact/@ShowsInterest}" Width="100" Height="30" VerticalAlignment="Top" HorizontalAlignment="Left" VerticalContentAlignment="Center" />
            <Button Content="Click" Click="ButtonBase_OnClick" Height="30" />
        </StackPanel>
    </Grid>
</Window>

MainWindow.xaml.cs

using System.Windows;

namespace submitbehavior
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
        {
            this.MyTextBox.Text = "test";
        }
    }
}

データソース (datecontext.xml):

<Contact ShowsInterest="true">
  <Name>John</Name>
  <Lastname>Doe</Lastname>
</Contact>
4

1 に答える 1

0

TextBox テキスト プロパティ バインディングは、フォーカスを失ったときにバインディング ソースを更新します。バインディングを次のように更新します。

    <TextBox Name="MyTextBox" Text="{Binding XPath=/Contact/Lastname, UpdateSourceTrigger=PropertyChanged}" Width="100" Height="30" VerticalAlignment="Top" HorizontalAlignment="Left"/>
于 2013-04-10T08:33:46.233 に答える