【问题标题】:why do items disappear when i redock the window?为什么我重新停靠窗口时项目会消失?
【发布时间】:2020-02-19 12:26:48
【问题描述】:

我尝试在 avalon 停靠窗口中使用 NLog Viewer 将 nlog 异常打印到列表框

如果我尝试停靠窗口,则列表框将被清除,并且将窗口与列表框停靠回来也是如此。

我该如何解决这个问题?

xml 代码

 <Grid>
        <StackPanel Margin="0,10">
            <Grid Visibility="{Binding outputVisibility, UpdateSourceTrigger=PropertyChanged}">
                <nlog:NlogViewer x:Name="logCtrl"  MinHeight="300" MinWidth="1000"/>
            </Grid>

            <Button Command="{Binding ConvertTextCommand}" Margin="5" Height="35">PrintException</Button>
            <Button Command="{Binding HideTextBoxCommand}" Margin="5">Hide</Button>
        </StackPanel>
    </Grid>

nlog 配置文件

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <extensions>
    <add assembly="NlogViewer" />
  </extensions>
  <targets>
    <target xsi:type="NlogViewer" name="ctrl" />
  </targets>
  <rules>
    <logger name="*" minlevel="Trace" writeTo="ctrl" />
  </rules>
</nlog>

我正在使用它来模拟异常。

try
            {
                counter++;
                if (counter % 2 == 0)
                    throw new OutOfMemoryException();
                else throw new ArgumentOutOfRangeException();
            }
            catch (Exception ex)
            {
                Logger.Error(ex.StackTrace + " " + ex.Message);
            }

更新

我还注意到,即使是带有文本的简单文本框也会在停靠或停靠后被清除

【问题讨论】:

  • 可停靠窗格可能已重新加载。您应该使用数据绑定来持久化这些值。
  • 是的,它已重新加载,因为 xceed avalon dock 不会在公共版本中保存选项卡状态。

标签: c# wpf mvvm nlog avalondock


【解决方案1】:

我发现问题是xceed avalon dock community version。

在 xceed github 项目中存在关于可停靠窗格重新加载的问题,他们添加了一个功能,以便在停靠高级版本后保留窗格中的信息。

我使用Avalon Dock 解决了这个问题。

据我了解,这是 xceed 项目的一个分支,但有更多的发展。我刚刚用 nuget 包管理器下载了这个并卸载了 xceed avalon dock。现在项目在停靠后保存

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 2015-08-02
    相关资源
    最近更新 更多