Bonjour, j'ai un problème avec la liaison dans ComboBox. Je voudrais lier des éléments ComboBox aux colonnes ListView et en tant que valeur de retour sélectionnée de la propriété attachée définie dans la colonne sélectionnée.Comment définir 'Propriété jointe' comme 'SelectedValuePath' dans ComboBox?
Dans l'exemple ci-dessous, vous pouvez voir un exemple de travail qui affiche la largeur de la colonne sélectionnée. Si vous essayez de modifier SelectedValuePath dans ComboBox dans (loc: SampleBehavior.SampleValue) vous obtenez une erreur de liaison:
erreur de chemin de BindingExpression: '(u: SearchableListView.SearchMemberPath)' propriété introuvable sur 'objet' '' GridViewColumn »
<Window x:Class="Problem_Sample1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:loc="clr-namespace:Problem_Sample1" WindowStartupLocation="CenterScreen" Title="Window1" Height="300" Width="300"> <DockPanel> <ComboBox DockPanel.Dock="Top" x:Name="combobox" ItemsSource="{Binding Path=View.Columns, ElementName=listview}" DisplayMemberPath="Header" SelectedValuePath="Width"> </ComboBox> <StatusBar DockPanel.Dock="Bottom"> <TextBlock> <TextBlock Text="Selected column (value): " /> <TextBlock Text="{Binding Path=SelectedValue, ElementName=combobox}" /> </TextBlock> </StatusBar> <ListView x:Name="listview"> <ListView.View> <GridView> <GridViewColumn Header="Name" Width="101" loc:SampleBehavior.SampleValue="201" /> <GridViewColumn Header="Surname" Width="102" loc:SampleBehavior.SampleValue="202" /> </GridView> </ListView.View> </ListView> </DockPanel> </Window>
SampleBehavior.cs
using System.Windows; using System.Windows.Controls; namespace Problem_Sample1 { public static class SampleBehavior { public static readonly DependencyProperty SampleValueProperty = DependencyProperty.RegisterAttached( "SampleValue", typeof (int), typeof (SampleBehavior)); [AttachedPropertyBrowsableForType(typeof(GridViewColumn))] public static int GetSampleValue(GridViewColumn column) { return (int)column.GetValue(SampleValueProperty); } [AttachedPropertyBrowsableForType(typeof(GridViewColumn))] public static void SetSampleValue(GridViewColumn column, int value) { column.SetValue(SampleValueProperty, value); } } }
Merci pour toute aide ou suggestion.