INotifyPropertyChanged
を実装するIssuesView
というクラスがあります。このクラスはObservableCollection<Issue>
を保持し、Bindings
によって消費の問題と呼ばれるDependencyProperty
として公開します。 IssuesView
クラスがApplication.Resources
で定義されているInotifyPropertyChangedがObservableCollectionプロパティで機能していません
<Page x:Class="Tracker.Pages.DEMO"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cont="clr-namespace:Tracker.Controls"
Title="DEMO">
<StackPanel>
<Button Click="Button_Click">Change</Button>
<cont:IssueTimeline IssuesForTimeline="{Binding Source={StaticResource issuesView},Path = Issues}"/>
</StackPanel>
- 私はこのように宣言テストページを持っている
public class IssuesView : DependencyObject, INotifyPropertyChanged
{
public Issues Issues
{
get { return (Issues)GetValue(IssuesProperty); }
set
{
SetValue(IssuesProperty, value);
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Issues"));
}
}
}
// Using a DependencyProperty as the backing store for Issues. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IssuesProperty =
DependencyProperty.Register("Issues", typeof(Issues), typeof(IssuesView), new UIPropertyMetadata(null));
public IssuesView()
{
Refresh();
}
public void Refresh()
{
this.Issues = new Issues();
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
- 以下のように定義されます。今、私はこのコードを持っているボタンのイベントhadnlerで
-
private void Button_Click(object sender, RoutedEventArgs e)
{
IssuesView iv = Application.Current.FindResource("issuesView") as IssuesView;
if (!once)
{
foreach (Issue i in iv.Issues)
{
i.DormantFor = new TimeSpan(30, 0, 0, 0);
i.AssignedUserID = 12;
i.Name = "MyName";
i.Priority = Issue.Priorities.Critical;
i.Status = Issue.Statuses.New;
i.Summary = "NewSummary";
}
once = true;
}
else
{
iv.Refresh();
}
は一度再増殖対コレクションの変異をテストする簡単なブール値です。
アイテムがINotifyPropertyChangedを実装するため、最初のボタンクリックでコレクションのアイテムが変更されますが、2回目のクリックでコレクションが再読み込みされますが、イベントがnullでなくてもUIは更新されません。
2回目のクリックでUIが更新されないのはなぜですか?コレクションの再投入によってUIが更新されるようにするにはどうすればよいですか?
なぜ、このコミュニティのwikiがありますか? –
Ja、applogies。それは間違いだった。あなたの答えをありがとう、本当に助けて! – Stimul8d