बातचीत चलाता अंदर DataTemplate के साथ काम नहीं XamlReader

0

सवाल

मैं कोशिश कर रहा हूँ, पार्स करने के लिए के साथ XamlReader.Load() एक DataTemplate (के लिए एक WPF datagrid) में गतिशील रूप से बनाई पीछे कोड :

DataTemplate dataTemplate;

StringReader template = new StringReader($@"
<DataTemplate
    xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
    xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml""
    xmlns:local=""clr-namespace:MyApp;assembly=MyApp"">
<DataTemplate.Resources>
    <local:ArrayMultiValueConverter x:Key=""arrayMultiValueConverter""/>
</DataTemplate.Resources>
    <StackPanel Orientation=""Vertical"">
        <Expander VerticalAlignment=""Center"" xmlns:i=""http://schemas.microsoft.com/xaml/behaviors"">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName=""IsExpanded"">
                <i:InvokeCommandAction Command=""{{Binding DataContext.TextFilterColumn}}""/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
            <Expander.Header>
                <TextBlock x:Name=""{dtColumnName}"" VerticalAlignment=""Center"" Text=""{{TemplateBinding Content}}"" Margin=""5,5,5,0"" FontWeight=""SemiBold""/>
            </Expander.Header>
            <StackPanel Orientation=""Horizontal"">
                <TextBox x:Name=""{"TbxFilter" + dtColumnName}"" Width=""100"" Margin=""5""/>
                <TextBlock Margin=""0,0,5,0"" VerticalAlignment=""Center"" FontFamily=""Segoe MDL2 Assets"">
                    <Hyperlink TextDecorations=""{{x:Null}}"" Command=""{{Binding DataContext.FilterColumnName, RelativeSource={{RelativeSource FindAncestor, AncestorType={{x:Type Window}}}}}}"">
                        <Hyperlink.CommandParameter>
                            <MultiBinding Converter=""{{StaticResource arrayMultiValueConverter}}"">
                                <Binding Path=""Text"" ElementName=""{dtColumnName}"" />
                                <Binding Path=""Text"" ElementName=""{"TbxFilter" + dtColumnName}"" />
                            </MultiBinding>
                        </Hyperlink.CommandParameter>   
                        &#xE721;
                    </Hyperlink>
                </TextBlock>
                <TextBlock Margin=""0,0,5,0"" VerticalAlignment=""Center"" FontFamily=""Segoe MDL2 Assets"">
                    <Hyperlink TextDecorations=""{{x:Null}}"" Command=""{{Binding DataContext.FilterColumnName, RelativeSource={{RelativeSource FindAncestor, AncestorType={{x:Type Window}}}}}}"">
                        <Hyperlink.CommandParameter>
                            <MultiBinding Converter=""{{StaticResource arrayMultiValueConverter}}"">
                                <Binding Path=""Text"" ElementName=""{dtColumnName}""/>
                                <Binding Path=""Text"" RelativeSource=""{{RelativeSource FindAncestor, AncestorType={{x:Type TextBlock}}}}""/>
                            </MultiBinding>
                        </Hyperlink.CommandParameter>
                        &#xe75c;
                    </Hyperlink>
                </TextBlock>
            </StackPanel>
        </Expander>
    </StackPanel>
</DataTemplate>
");

XmlReader xmlReader = XmlReader.Create(template);
dataTemplate = XamlReader.Load(xmlReader) as DataTemplate;

textColumn.HeaderTemplate = dataTemplate;

सभी काम कर रहा है जब मैं दूर इस भाग का कोड :

<i:Interaction.Triggers>
    <i:EventTrigger EventName=""IsExpanded"">
        <i:InvokeCommandAction Command=""{{Binding DataContext.TextFilterColumn}}""/>
    </i:EventTrigger>
</i:Interaction.Triggers>

लेकिन जब मैं जोड़ने के लिए है, यह एक Exception Thrown :

प्रणाली.Windows.मार्कअप । XamlParseException: "सेट नहीं कर सकता है अज्ञात सदस्य '{http://schemas.microsoft.com/xaml/behaviors}बातचीत.हो सके'.' लाइन नंबर '11' और रेखा की स्थिति '10'.'

मैं का उपयोग करें "XAML व्यवहार" के बाद इस लेख (लेकिन साथ ही हुआ Interactivity) :

https://devblogs.microsoft.com/dotnet/open-sourcing-xaml-behaviors-for-wpf/

यह करने के लिए लगता है के साथ एक मुद्दा हो XamlReader.Load(xmlReader).

अगर किसी को जानता है कि एक वैकल्पिक हल है, मैं आभारी होंगे.

विन्यास :

  • ढांचे 4.8 (के साथ की कोशिश की 4.7.2)
  • Microsoft.Xaml.व्यवहार.Wpf 1.1.39

धन्यवाद.

c# eventtrigger wpf xamlreader
2021-11-22 22:56:54
1

सबसे अच्छा जवाब

2

यह नहीं है में उल्लेख किया doucmentation के XamlReader.लोड लेकिन किसी भी कस्टम विधानसभाओं में संदर्भित एक XAML नाम स्थान मानचित्रण चाहिए पहले से ही उपलब्ध किया जा करने के लिए आवेदन.

आप दो विकल्प हैं:

1.लोड विधानसभा Microsoft.Xaml.Behaviors या प्रारंभ के कुछ प्रकार से विधानसभा पढ़ने से पहले xaml इनपुट.

Assembly assembly = Assembly.LoadFrom("Microsoft.Xaml.Behaviors.dll");

या

var et = new Microsoft.Xaml.Behaviors.EventTrigger();

2.उपयोग CLR नामस्थान में घोषणा xaml

xmlns:i=""clr-namespace:Microsoft.Xaml.Behaviors;assembly=Microsoft.Xaml.Behaviors""
2021-11-26 11:25:19

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में