estoy vinculante la colección PageMediaSize
de un PrintQueue
a la ItemSource
de un ComboBox
WPF (Esto funciona muy bien). Entonces estoy vinculando el SelectedItem
del ComboBox
al DefaultPrintTicket.PageMediaSize
del PrintQueue
. Si bien esto establecerá el valor seleccionado en DefaultPrintTicket.PageMediaSize
simplemente no establece el valor inicialmente seleccionado de ComboBox
en el valor inicial de DefaultPrintTicket.PageMediaSize
Esto se debe a que la referencia DefaultPrintTicket.PageMediaSize
no coincide con ninguna de las referencias en la colección. Sin embargo, no quiero que compare los objetos por referencia, sino por valor, pero PageMediaSize
no anula Igual (y no tengo control sobre él). Lo que realmente me gustaría hacer es configurar un IComparable
para el ComboBox
para usar, pero no veo ninguna forma de hacerlo. Intenté usar un Converter
, pero necesitaría más que el valor y no pude descifrar cómo pasar la colección al ConverterProperty
. Cualquier idea sobre cómo manejar este problema.unión a ComboBox SelectedItem cuando se hace referencia no en ItemsSource
Aquí es mi xaml
<ComboBox x:Name="PaperSizeComboBox"
ItemsSource="{Binding ElementName=PrintersComboBox, Path=SelectedItem,
Converter={StaticResource printQueueToPageSizesConverter}}"
SelectedItem="{Binding ElementName=PrintersComboBox,
Path=SelectedItem.DefaultPrintTicket.PageMediaSize}"
DisplayMemberPath="PageMediaSizeName"
Height="22"
Margin="120,76,15,0"
VerticalAlignment="Top"/>
Y el código para el convertidor que recibe la colección PageMediaSize
public class PrintQueueToPageSizesConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
return value == null ? null :
((PrintQueue)value).GetPrintCapabilities().PageMediaSizeCapability;
}
public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Editar
Intenté fijar el DefaultPrintTicket.PageMediaSize
a la referencia correspondiente en el colección antes de InitializeComponent
, pero eso no funcionó k. Definitivamente establece el valor cuando selecciono algo del ComboBox
, pero no parece ir en la dirección opuesta.