2017-01-03 8 views
0

私はアイテムのリストを動的に作成するリストビューを持っています。リストビューでは、各メンバーに2つのラベルがあります。「ランク」(数字、通常1〜10)と「名前」です。各リストビュー項目には3つのボタンもあります。ユーザーが「ランク」ラベルを編集できるようにしたいと思います。彼らも名前ラベルを編集することができる場合は、それは大丈夫ですが、私はちょうど1つを好むでしょう。Listview:ラベルフィールドの1つだけを編集する方法

私がオンラインで見た回答はすべて、ListViewの "LabelEdit"プロパティに関連していますが、その属性を含めるとコンパイルエラーが発生するため、私にとっては存在しないようです。ここで

XAMLは、私のListViewのためのものです:

<ListView Margin="134,110,100,50" 
       Name="carrierList" 
       HorizontalAlignment="Center" 
       Width="232" 
       BorderBrush="LightGray" 
       BorderThickness="1,1,1,1" 
       Visibility="{Binding Path=ShowCarrierList, Converter={StaticResource BoolToVis}}" 
       ItemsSource="{Binding CarrierList}" 
       Grid.RowSpan="2" 
       ScrollViewer.CanContentScroll="True"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
        <DockPanel Margin="0,0,0,0" HorizontalAlignment ="Stretch"> 
         <Grid HorizontalAlignment="Stretch"> 
          <Grid.Resources> 
           <Style TargetType="{x:Type Border}"> 
            <!-- All rows --> 
            <Setter Property="BorderBrush" Value="Black" /> 
            <Setter Property="BorderThickness" Value="2" /> 
            <Setter Property="CornerRadius" Value="5" /> 
           </Style> 
          </Grid.Resources> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="165" /> 
           <ColumnDefinition Width="20" /> 
           <ColumnDefinition Width="20" /> 
           <ColumnDefinition Width="20" /> 
          </Grid.ColumnDefinitions> 
         <TextBlock Text="{Binding Rank}" /> 
         <TextBlock Text="{Binding CarrierName}" Margin="20,0,0,0"/> 


         <Button Width="20" Grid.Column="1" HorizontalAlignment="Right" ToolTip="Edit Carrier Details" Command="{Binding ElementName=carrierList, Path=DataContext.EditCarrierClick}" CommandParameter="{Binding}"> 
           <StackPanel> 
            <Image Source="{StaticResource EditImg}"/> 
           </StackPanel> 
          </Button> 
         <Button Width="20" Grid.Column="2" HorizontalAlignment="Right" ToolTip="View All Nodes With This Carrier" Command="{Binding ElementName=carrierList, Path=DataContext.AffectedNodeListClick}" CommandParameter="{Binding}"> 
           <StackPanel> 
            <Image Source="{StaticResource NetworkImg}"/> 
           </StackPanel> 
          </Button> 
         <Button Width="20" Grid.Column="3" HorizontalAlignment="Right" ToolTip="Remove Carrier From Node" Command="{Binding ElementName=carrierList, Path=DataContext.OnRemoveClick}" CommandParameter="{Binding}"> 
           <StackPanel> 
            <Image Source="{StaticResource ErrorImg}"/> 
           </StackPanel> 
         </Button> 
         </Grid> 
        </DockPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
+0

へ編集するには、値を見つけ、observableCollectionで編集し、抽出し、変更してから挿入する必要があります。 – Sasha

+0

ユーザーが値をクリックして入力を開始できるようにしたい。情報はすでに観測可能なコレクション(Carrierオブジェクトの観測可能なコレクション)にあります。 –

答えて

1

は、テキストボックスに「ランク」ラベルを交換し、「ランク」のソースプロパティは、パブリックセッターを持っていることを確認してください:

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="165" /> 
    <ColumnDefinition Width="20" /> 
    <ColumnDefinition Width="20" /> 
    <ColumnDefinition Width="20" /> 
</Grid.ColumnDefinitions> 
<TextBox Text="{Binding Rank}" Background="Transparent" BorderThickness="0" /> 
<TextBlock Text="{Binding CarrierName}" Margin="20,0,0,0"/> 
関連する問題