首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据农业中的FlowDocumentScrollViewer

数据农业中的FlowDocumentScrollViewer
EN

Stack Overflow用户
提问于 2013-03-14 08:42:13
回答 1查看 599关注 0票数 1

我收到以下错误消息:“必须在附加到新父Visual"之前从当前父Visual断开指定的子节点。

我知道问题出在哪里,但我无法在我的实际应用程序中修复它,我使用BeginningEdit()事件弹出一个新窗口来编辑包含麻烦制造者Flowdocument的myObject

我也使用我的克隆扩展来创建一个new Flowdocument,希望它可以删除这个错误,但是它不会改变任何事情

XAML

代码语言:javascript
复制
<DataGrid AutoGenerateColumns="False" Name="myDGrid">        
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="myHeader">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <FlowDocumentScrollViewer Width="100" Height="50"                                
                                                      HorizontalScrollBarVisibility="Hidden" 
                                                      VerticalScrollBarVisibility="Hidden" 
                                                      FontStretch="Normal" FontSize="13" FontWeight="Bold" 
                                                      HorizontalContentAlignment="Center" 
                                                      VerticalContentAlignment="Center"  
                                                      IsManipulationEnabled="False" IsSelectionEnabled="False"
                                                     Document="{Binding}">                                
                            </FlowDocumentScrollViewer>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>

                <DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <Label/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellEditingTemplate>

                </DataGridTemplateColumn>
            </DataGrid.Columns>               
        </DataGrid>

代码隐藏

代码语言:javascript
复制
    public string myFlowString
    {
        get
        {
            return (@"<FlowDocument PagePadding='0,0,0,0' Background='Green' AllowDrop='True' xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'>
                            <Paragraph Background='Red' TextAlignment='Center'> some text befor <LineBreak/> Komponente 1<Run FontFamily='Palatino Linotype' Typography.Variants='Superscript'>1,2,3,4</Run>
                                <LineBreak/> Nachtisch</Paragraph> </FlowDocument>");
        }
    }

    public MainWindow()
    {
        InitializeComponent();

         var _mylist = new List<FlowDocument>();

        var myFlowDoc = XamlReader.Load(XmlReader.Create(new StringReader(myFlowString))) as FlowDocument;



        for (int i = 0; i < 10;i++ )
            _mylist.Add(myFlowDoc.Clone());

        myDGrid.ItemsSource = _mylist;
    }

}

public static class Extension
{
    public static FlowDocument Clone(this FlowDocument flowdoc)
    {
        var xml = XamlWriter.Save(flowdoc);
        return xml.toFlowDocument();
    }

    public static FlowDocument toFlowDocument(this string xamlString)
    {
        var stringReader = new StringReader(xamlString);
        var xmlReader = System.Xml.XmlReader.Create(stringReader);

        return XamlReader.Load(xmlReader) as FlowDocument;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-26 10:42:54

要解决这个问题,每个DataGridCell应该使用两个属性

一个给你的CellTemplate

一个给你的CellEditingTemplate

每次您的getter被调用时,您都必须创建一个新的FlowDocument,因为它接合起来就像DataGridCell如何保存这样的数据一样存在缺陷/故障。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15404563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档