Привязать к разнице двух свойств от двух разных моделей представления - PullRequest
1 голос
/ 12 января 2011

У меня есть две модели представления (каждая со своими моделями): AmendmentViewModel YearViewModel

каждая имеет свойство: AmendmentViewModel.TotalAmended YearViewModel.TotalCommitted

В представлении есть TabControl и каждая изviewmodels - это текстовый текст для страницы управления вкладками.Да, я знаю, что технически я мог бы использовать одну модель представления, но это МНОГО кода и большое представление, которое Имеет , чтобы быть в tabcontrol.

Как мне установить привязку TextBox ксумма AmendmentViewModel.TotalAmended & YearViewModel.TotalCommitted?

1 Ответ

3 голосов
/ 12 января 2011

Вы можете использовать MultiBinding вместе с IMultiValueConverter. Вы можете найти пример здесь .

Edit:

Вот пример:

<Grid>
    <Grid.Resources>
        <sys:String x:Key="dataSource1">42</sys:String>
        <sys:String x:Key="dataSource2">22</sys:String>
        <local:SubtractionConverter x:Key="subtractionConverter"/>
    </Grid.Resources>
    <TextBlock>
        <TextBlock.Text>
            <MultiBinding Converter="{StaticResource subtractionConverter}">
                <Binding Path="." Source="{StaticResource dataSource1}"/>
                <Binding Path="." Source="{StaticResource dataSource2}"/>
            </MultiBinding>
        </TextBlock.Text>
    </TextBlock>
</Grid>

и преобразователь:

public class SubtractionConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
         return (double.Parse((string)values[0]) - double.Parse((string)values[1])).ToString();
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...