2通りの表現を、2つのフィールドで。
(1) 幅
(2) 幅x個数
幅を入力したい。しかし、分割する場合も有る。では、最初は3つだけ分割→幅1,幅2,幅3。いやいや、そうではなく、何個かに分ける場合も有る→幅1x幅1個数,幅2x幅2個数,幅3x幅3個数。これでも表現できないものは備考に、という流れになりました。
MultiBindingの性質として、「入力は1つ以上」「出力は1つだけ」という条件が有ります。丁度これに合っています。
XAML:
<GridViewColumn Header="W1" Width="70" local:LvSortSpec.Columns="幅1" local:GvcManager.Key="幅1" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock HorizontalAlignment="Center">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource 寸法個数Converter}">
<Binding Path="幅1" />
<Binding Path="幅1個数" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
お分かりとは思いますが、 "寸法個数Converter"を、リソース辞書で定義するようにしてください。
<local:寸法個数Converter x:Key="寸法個数Converter" />
C#
public class 寸法個数Converter : IMultiValueConverter {
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
if (true
&& values != null
&& values.Length == 2
) {
if (!object.ReferenceEquals(values[0], DependencyProperty.UnsetValue)) {
if (!object.ReferenceEquals(values[1], DependencyProperty.UnsetValue)) {
return values[0] + "×" + values[1];
}
return "" + values[0];
}
}
return "";
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) {
throw new NotImplementedException();
}
}
DependencyProperty.UnsetValue が出現します。値が無い場合、nullか、DBNull.Valueが来るのかと思いきや、違って、こういう値がくるようです。