不能在RadGridView中使用multibinding

时间:2015-07-31 05:55:18

标签: c# wpf binding radgridview multibinding

我遇到了网格combobox列绑定的严重问题。

我有一个grid,其中每行代表一个项目。我的商品具有商品"NumberPhase"

我想绑定某个ItemsSource列的combobox。对于不同的行,值列表应该是不同的。

仅绑定到我的项目属性时,它可以正常工作:

<telerik:gridviewcomboboxcolumn x:name="sensorCountColumn" edittriggers="CellClick"
    width="*" itemssourcebinding="NumberPhase" datamemberbinding="{Binding FactorType, Converter={StaticResource enumDescriptionConverter}, ConverterParameter=FACTOR_TYPE}"
    isreadonlybinding="{Binding IsThreePhaseParentAndNotDeleted, Converter={StaticResource invertBooleanConverter}}"
    editorstyle="{StaticResource radComboBoxStyle}">

但是,我想在另一个变量中添加dependency(该变量不属于此grid's row的项目)。所以我试过这样的事情:

<telerik:gridviewcomboboxcolumn x:name="sensorCountColumn" edittriggers="CellClick"
    width="*" datamemberbinding="{Binding FactorType, Converter={StaticResource enumDescriptionConverter}, ConverterParameter=FACTOR_TYPE}"
    isreadonlybinding="{Binding IsThreePhaseParentAndNotDeleted, Converter={StaticResource invertBooleanConverter}}"
    editorstyle="{StaticResource radComboBoxStyle}">

    <telerik:GridViewComboBoxColumn.ItemsSource>
        <MultiBinding diagnostics:PresentationTraceSources.TraceLevel="High" Converter="{StaticResource sensorCountConverter}">
            <Binding Path="NumberPhase" />
            <Binding Path="Data.PanelConfig.ID" Source="{StaticResource editedLocation}" />
        </MultiBinding>
    </telerik:GridViewComboBoxColumn.ItemsSource>

    ...

</telerik:gridviewcomboboxcolumn>

运行时,我的转换器获得第一个值(NumberPhase)为DependencyPropertyUnsetValue。第二个值就好了。

我想也许我应该将标记名称更改为ItemsSourceBinding而不是ItemsSource(因为在第一个示例中,我将该名称用于一个变量并且它起作用)。 所以我试过这样的事情:

<telerik:gridviewcomboboxcolumn x:name="sensorCountColumn" edittriggers="CellClick"
    width="*" datamemberbinding="{Binding FactorType, Converter={StaticResource enumDescriptionConverter}, ConverterParameter=FACTOR_TYPE}"
    isreadonlybinding="{Binding IsThreePhaseParentAndNotDeleted, Converter={StaticResource invertBooleanConverter}}"
    editorstyle="{StaticResource radComboBoxStyle}">

<telerik:GridViewComboBoxColumn.ItemsSourceBinding>
    <MultiBinding diagnostics:PresentationTraceSources.TraceLevel="High" Converter="{StaticResource sensorCountConverter}">
        <Binding Path="NumberPhase" />
        <Binding Path="Data.PanelConfig.ID" Source="{StaticResource editedLocation}" />
    </MultiBinding>
</telerik:GridViewComboBoxColumn.ItemsSourceBinding>
</telerik:gridviewcomboboxcolumn>

结果是exception抛出了消息:

  

无法在'ItemsSourceBinding'属性上设置'MultiBinding'   'GridViewComboBoxColumn'类型。只能设置'MultiBinding'   DependencyObject的DependencyProperty。

我也读过关于proxy pattern的内容,但我想我不能在我的情况下使用它,因为当我尝试将它放在网格中时,我收到以下消息:

  

“RadGridView”类型不支持直接内容。我不能放置   在外面,因为那时我将有一个问题绑定到正确的   行的网格项目。

任何建议都将受到赞赏!!

1 个答案:

答案 0 :(得分:1)

我认为这可能对您有用: (将多重绑定放在ItemTemplate中)

    using (var client = new ImapClient(new ProtocolLogger("imap.log")))
        {

            using (var cancel = new CancellationTokenSource())
            {
                //LogIn
                client.Connect("imap.gmail.com", 993, MailKit.Security.SecureSocketOptions.SslOnConnect);
                var credentials = new NetworkCredential(username, password);
                client.Authenticate(credentials, cancel.Token);


                var personal = client.GetFolder(client.PersonalNamespaces[0]);
                f1.tbl_folderTableAdapter1.Insert(ID, PARENTID, username);

                client.Disconnect(true);
            }
        }