我想将新的DependencyProperty添加到ListBox控件中使用的ListBoxItem类。我需要添加IsEditing属性。当用户长时间点击我的ListBoxItem时,我会将它的IsEditing属性更改为True,然后在此属性的Trigger中将更改样式。实际上是将TextBlock更改为TextBox的想法。
我希望我的解释清楚。它是否有意义,或者存在更简单的方法?
由于
答案 0 :(得分:0)
请参阅下面的XAML - DataTemplate的子项是您项目的模板。您可以使用Grid,Canvas等内置WPF元素或您自己的用户/自定义控件。您可以创建EditableItem控件并使用它来处理长按鼠标等。
这不是最优雅的方式,但可能是最简单的方法。更高级的方法将涉及附加行为的使用,这消除了对自定义/用户控件的需要。另外,看看VisualStateManager类,它可以简化不同模式之间的切换'您可编辑的项目(无论如何我都会使用它)。
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ListBox x:Name="l">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Height="30" Background="Green" Width="100">
<TextBlock Text="{Binding}" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Window>
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication2
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Loaded += (o, e) =>
{
this.l.ItemsSource = Enumerable.Range(1, 3);
};
}
}
}