Функция преобразования всегда имеет одно значение DependencyProperty.UnsetValue - WPF - PullRequest
0 голосов
/ 24 марта 2011

Я новичок в WPF.В моем приложении я пытаюсь вычислить столбец таблицы данных на основе другого столбца и TextBox.это должно умножить два и дать результат.Для того же я использую IMultiValueConverter.Я в DataGrid. Привязки следующие:

<DataGrid.Columns>

                <DataGridTemplateColumn Header="TranD">

                    <DataGridTemplateColumn.CellTemplate >
                        <DataTemplate>
                            <TextBox Text="{Binding Path=TranD,    Mode=TwoWay,    UpdateSourceTrigger=PropertyChanged,    TargetNullValue=0}" Name="dgtbTranD"  
                                                 />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                    <DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate>
                            <TextBox Text="{Binding Path=TranD,    Mode=TwoWay,    UpdateSourceTrigger=PropertyChanged,    TargetNullValue=0}"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellEditingTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Tran    Credit" Width="*">
                    <DataGridTemplateColumn.CellTemplate >
                        <DataTemplate>
                            <TextBox Text="{Binding Path=TranC, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, TargetNullValue=0}" Name="dgctbTranC" 
                                                  />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                    <DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate>
                            <TextBox Text="{Binding Path=TranC, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, TargetNullValue=0}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellEditingTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Func Debit" Width="*">
                    <DataGridTemplateColumn.CellTemplate >
                        <DataTemplate>
                            <TextBlock Name="dgtbFuncD" IsEnabled="False" >
                                <TextBlock.Text>
                                     <MultiBinding Converter="{StaticResource Multiplication}">
                                            <Binding Path="TranD" TargetNullValue="0" />
                                             <Binding ElementName="txtExchRate"  Path="Text"/>
                                    </MultiBinding>
                                </TextBlock.Text>
                            </TextBlock>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>

                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Func Credit" Width="*">
                    <DataGridTemplateColumn.CellTemplate >
                        <DataTemplate>
                            <TextBlock Name="dgctbFuncC" IsEnabled="False">
                                  <TextBlock.Text>
                                     <MultiBinding Converter="{StaticResource Multiplication}">
                                            <Binding Path="TranC" />              

                                            <Binding ElementName="txtExchRate"  Path="Text"  />
                                    </MultiBinding>
                                </TextBlock.Text>
                            </TextBlock>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>

                </DataGridTemplateColumn>
            </DataGrid.Columns>

Проблема в том, что моя привязка элемента.Имя элемента абсолютно правильно, но в моем реализованном классе оно всегда принимает значение как DependencyProperty.UnsetValue.В чем проблема???Любая идея.

Функция преобразователя выглядит следующим образом:

    public object Convert(object[] values,    Type targetType, object parameter,    System.Globalization.CultureInfo    culture)    {
            try
            {
                if (values[0] == null || values[1] == null)
                {
                    return 0;
                }
                else
                {
                    return (System.Convert.ToInt32(values[0]) + System.Convert.ToInt32(values[1])).ToString();
                }
            }
            catch (Exception ex)
            {
                return 0;
            }   

 }

1 Ответ

0 голосов
/ 24 марта 2011

ElementName связывание источников для поиска исходного элемента в текущей ИМЯ ОБЛАСТИ. Это похоже на область действия в других языках (например, C # или VB). Области обычно определяются каждым уникальным файлом XAML (Window / UserControl), но шаблоны (ControlTemplates и DataTemplates) имеют свою собственную область. Существуют и другие элементы управления, которые также определяют свои собственные области имен, например ContextMenu.

Похоже, текстовое поле, на которое вы ссылаетесь, находится в другой области имен.

...