Quero criar um controle personalizado que atue como um controle arrastável (arrastar e soltar) e usá-lo em uma janela.
meu problema é que não consigo fazer a encadernação funcionar.
O contexto dos dados está sendo definido em window.xaml.cs
a ViewModel
e sendo passado usando Autofac
.
Eu tenho uma lista de instâncias de classe, onde cada instância tem uma Name
propriedade e também implementa INotifyPropertyChanged
.
A lista de instâncias está delimitada corretamente, mas não consigo ver o Name
de cada instância.
Parte da janela onde uso o controle personalizado:
<Border Grid.Column="0" Margin="15" Background="#f8f9fa" CornerRadius="10" BorderBrush="#ced4da" BorderThickness="1">
<ListBox AllowDrop="True" Drop="HandleDrop" Background="Transparent" ItemsSource="{Binding RevitLinks, UpdateSourceTrigger=PropertyChanged}">
<ListBox.ItemTemplate>
<DataTemplate>
<local:DraggableText Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Border>
o controle tem um TextBlock onde deveria ser Text="{''' Name
propriedade'''}"
<UserControl x:Class=myNameSpace
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:myNameSpace"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
Height="20"
Width="300"
Background="Transparent"
>
<Grid>
<TextBlock Text="{Binding Text}" Foreground="Black" />
</Grid>
</UserControl>
o arquivo .xaml.cs:
partial class DraggableText : UserControl
{
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
"Text", typeof(string), typeof(DraggableText), new PropertyMetadata(defaultValue: "default"));
public DraggableText()
{
InitializeComponent();
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (e.LeftButton == MouseButtonState.Pressed)
{
DragDrop.DoDragDrop(this, this, DragDropEffects.Move);
}
}
}
Seria bom se alguém me indicasse o que estou esquecendo para fazer a vinculação de dados funcionar, por favor.
Você precisa usar a vinculação correta para o TextBlock no UserControl (DraggableText)