是否删除C#Flowdocument元素之间的空白?
我希望能够删除FlowDocument中各种内联元素之间的空白。下面是一个非常具体的例子,只是为了说明问题。所需的输出是“Hello World?”,但发生的是“Hello World?”。在这种情况下“?”是一个可点击的按钮 我找了一段时间都没有成功。我尝试了所有形式的衬垫/边距调整,但它们只能增加间距。我开始相信空间是FlowDocument元素边界固有的。这似乎是一系列的限制是否删除C#Flowdocument元素之间的空白?,c#,wpf,richtextbox,flowdocument,C#,Wpf,Richtextbox,Flowdocument,我希望能够删除FlowDocument中各种内联元素之间的空白。下面是一个非常具体的例子,只是为了说明问题。所需的输出是“Hello World?”,但发生的是“Hello World?”。在这种情况下“?”是一个可点击的按钮 我找了一段时间都没有成功。我尝试了所有形式的衬垫/边距调整,但它们只能增加间距。我开始相信空间是FlowDocument元素边界固有的。这似乎是一系列的限制 <RichTextBox> <FlowDocument> <Paragr
<RichTextBox>
<FlowDocument>
<Paragraph Margin="0">
<Run>
Hello World
</Run>
<InlineUIContainer>
<Button Click="ButtonClick">?</Button>
</InlineUIContainer>
</Paragraph>
</FlowDocument>
</RichTextBox>
你好,世界
?
您可以在按钮上添加负边距,使其更接近:
<InlineUIContainer><Button Margin="-3,0">?</Button></InlineUIContainer>
?
在基于XML的XAML中,尽管格式看起来很难看,但如果要避免运行之间出现空白,则不能在元素的关闭标记和打开标记之间留出任何空间。
试试这个:
<RichTextBox>
<FlowDocument>
<Paragraph Margin="0">
<Run>
Hello World
</Run><InlineUIContainer>
<Button Margin="0" >?</Button>
</InlineUIContainer>
</Paragraph>
</FlowDocument>
</RichTextBox>
你好,世界
?
好的,这个问题是由于
解决方案的想法:
预处理xaml删除标记之间的新行/空白字符
实施:
var uri = @"pack://application:,,,/YourProjectName;component/PathToDictionary/Strings.xaml";
var resourceInfo = Application.GetResourceStream(uri);
using (var xmlReader = new XmlTextReader(resourceInfo.Stream) { WhitespaceHandling = WhitespaceHandling.None})
{
var xamlReader = new System.Windows.Markup.XamlReader();
dictionary = (ResourceDictionary)xamlReader.LoadAsync(xmlReader);
}
MyControl.Resources.MergedDictionaries.Add(dictionary);
我正在使用我们自己定制的可本地化ResorceDictionary子代,wich有一个删除空白的选项,并自动处理所有这些内容。一次运行似乎会在最后得到1/2的空间。我不知道如何解决这个问题。我认为这不是一个好的解决办法。请继续阅读下面的答案。