텍스트 블록을 내 변수 slctItem
에 바인딩하려고합니다. 그러나 필요한 데이터가 포함되어 있음을 알 수 있습니다. 그러나 창에는 예상 한 데이터가 표시되지 않습니다. 내 제어를위한 코드는 다음과 같습니다. 이 컨트롤은 컨트롤의 값을 표시하는 팝업 창에 의해 사용됩니다.INotifyPropertyChanged의 PropertyChanged 멤버가 항상 null입니다.
코드를 걸 으면 해당 핸들러가 OnPropertyChanged()
메서드에서 매번 null을 반환하는 것을 볼 수 있습니다. 왜? 나는 여기서 뭔가 잘못하고있을 것임에 틀림 없다. 다시 slcItem
에는 내가 사용하고자하는 데이터가 포함되어 있습니다. OnPropertyChanged()
메서드는 처리기에 null이 포함되어 있으면 발생시킵니다.
public partial class MetaData : UserControl, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _slctItem;
public MetaData()
{
InitializeComponent();
}
public string slctItem
{
get
{
return _slctItem;
}
set
{
_slctItem = value;
OnPropertyChanged("slctItem");
}
}
private void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
internal void Refresh()
{
try
{
// If DataContext is Null or a detached DataRow, disable the view
if (DataContext != null && (DataContext is DataRow && ((DataRow)DataContext).RowState != System.Data.DataRowState.Detached))
{
if (DataContext is "Something Here")
{
slctItem = (("Something Here")this.DataContext).NAME;
}
}
}
catch (Exception e)
{
throw new Exception("MetaData -> Refresh(): " + e.Message);
}
}
다음은 내가 제어 할 수있는 XAML 코드입니다.
public MetaData()
{
InitializeComponent();
this.DataContext = this;
}
이이 적합한 속성을 찾을 바인딩 수 있습니다 : 당신은 자신에게 DataContext
을 설정해야
<TextBox Grid.Column="2" Grid.Row="0" Text="{Binding Path=slctItem, Mode=OneWay, Converter={StaticResource myFirstCharToUpperConverter}}" Width="150" Height="25" HorizontalAlignment="Left" />
'DataContext' 속성을 설정하지 않은 것처럼 보입니다. 그 코드가 누락되었거나 그것을 작성하는 것을 잊었습니까? 이벤트 처리기는 설정하지 않고 설정합니다. – BradleyDotNET