2017-05-31 6 views
1

listview1.Items[0].Refresh();メソッドなしでwpf listviewアイテムテキストを変更するにはどうすればよいですか?wpf listviewアイテムテキストを変更するには

私のXAMLコード:

<ListView Height="233" HorizontalAlignment="Left" Margin="0,78,0,0" Name="listView1" VerticalAlignment="Top" Width="503" IsSynchronizedWithCurrentItem="True"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn x:Name="GridViewColumnName1" Header="Files" Width="120"> 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <Grid Width="{Binding ActualWidth, ElementName=GridViewColumnName1}"> 
           <StackPanel Orientation="Vertical" Grid.Column="1" Margin="8,0"> 
            <StackPanel Orientation="Horizontal"> 

             <Label Content="{Binding ItemsName,Mode=TwoWay}" Name="listnameLB"></Label> 

            </StackPanel> 
           </StackPanel> 
          </Grid> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 
      </GridView> 
     </ListView.View> 
    </ListView> 

マイコード:

private ListViewItemsData ListviewObject; 
public class ListViewItemsData 
{ 
    public string ItemsName { get; set; } 
} 

private void button2_Click(object sender, RoutedEventArgs e) 
{ 
    listView1.Items.Add(new ListViewItemsData() 
    { 
     ItemsName = "ABCD" 
    }); 
} 

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    //ListviewObject = new ListViewItemsData(); 
    ListviewObject = (ListViewItemsData)listView1.Items[0]; 
    ListviewObject.ItemsName = "EFGH"; 
    //listView1.Items.Refresh(); 
} 

私はボタン1イベントの "ItemsName" ラベルの内容を変更したいです。

答えて

0

ListViewItemsDataクラスはINotifyPropertyChangedを実装し、データバインドItemsNameプロパティのセッターでPropertyChangedイベントを発生させる必要があります。

public class ListViewItemsData : INotifyPropertyChanged 
{ 
    private string _itemsName; 
    public string ItemsName 
    { 
     get { return _itemsName; } 
     set { _itemsName = value; OnPropertyChanged(); } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
     if (this.PropertyChanged != null) 
      this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 

(のみ)、これは動作するはずです:

ListviewObject.ItemsName = "EFGH"; 
+0

Thaksを!この作品! :) – Gabee8

関連する問題