ボタンが押されたときに ListView で選択した行を打ち消す方法を見つけようとしています。内部に複数の列を持つ GridView があります。これらの列は、作成したクラスのフィールドにバインドされ、ListView にデータを入力する ObservableCollection に送信されます。
ボタンをクリックした後、選択した行全体に赤い線が表示されることが望ましいですが、この時点では、各セルのテキストが打たれただけでも満足できます。
私はあらゆる種類のことを試しました。私が得た最も近いものは、予約クラスの Notes フィールドを TextBlock に変更し、次のように TextDecoration を追加することで、ツールチップに取り消し線付きのテキストを表示することができたことです。
Reservation selected = (Reservation)shuttleView.SelectedItem;
TextDecoration td = new TextDecoration(TextDecorationLocation.Strikethrough, new Pen(Brushes.Black, 1), 0, TextDecorationUnit.FontRecommended, TextDecorationUnit.FontRecommended);
selected.Notes.TextDecorations.Add(td);
ただし、これは装飾をツールチップにのみ配置し、ListView には配置しません...
リストビューとクラスを以下に投稿しました。
<ListView Height="287" HorizontalAlignment="Left" Margin="148,12,0,0" Name="shuttleView" VerticalAlignment="Top" Width="720" >
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="ToolTip" Value="{Binding Notes}" />
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn Width="50" Header="Time"
DisplayMemberBinding="{Binding Time}" />
<GridViewColumn Width="50" Header="DO/PU"
DisplayMemberBinding="{Binding DropPickup}" />
<GridViewColumn Width="100" Header="# People"
DisplayMemberBinding="{Binding People}" />
<GridViewColumn Width="100" Header="Room #"
DisplayMemberBinding="{Binding Room}" />
<GridViewColumn Width="100" Header="Hotel"
DisplayMemberBinding="{Binding Hotel}" />
<GridViewColumn Width="112" Header="Location"
DisplayMemberBinding="{Binding Location}" />
<GridViewColumn Width="198" Header="Notes"
DisplayMemberBinding="{Binding Notes}" />
</GridView>
</ListView.View>
</ListView>
class Reservation
{
public string ResID { get; set; }
public string Time { get; set; }
public string DropPickup { get; set; }
public string People { get; set; }
public string Room { get; set; }
public string Hotel { get; set; }
public string Location { get; set; }
public string Notes { get; set; }
public Reservation(string ResID, string Time, string DropPickup, string People, string Room, string Hotel, string Location, string Notes)
{
this.ResID = ResID;
this.Time = Time;
this.DropPickup = DropPickup;
this.People = People;
this.Room = Room;
this.Hotel = Hotel;
this.Location = Location;
this.Notes = Notes;
}
}