텍스트 상자, 확인란 및 버튼이있는 양식이 있습니다. TextBox 및 Button은 Grid.Datacontext
에 정의 된 XmlDataProvider를 통해 xml 파일에 바인딩됩니다. 버튼 클릭시 textbox.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>
UpdateSourceTrigger =하여 PropertyChanged가 속임수를 썼는지, 그러나 나는 당신의 설명에 동의하지 않습니다. 버튼이나 다른 텍스트 상자를 클릭하면 현재 선택된 텍스트 상자의 포커스가 끊긴 이벤트가 트리거됩니다. 어쨌든 도와 주셔서 감사하고 Stackoverflow에 오신 것을 환영합니다. – Joel
내 설명은 특정 시나리오에 대한 것입니다. 이 경우 버튼을 클릭 할 때 텍스트 상자의 포커스가 사라지고 그 값이 "테스트"로 변경되므로 손실 된 포커스 이벤트는 텍스트 상자에서 새로운 값으로 트리거되지 않습니다. 내 대답을 수락 해 주셔서 감사합니다. – adnan