【发布时间】:2018-06-01 12:12:21
【问题描述】:
我正在尝试在 xaml 中使用 WPF 创建一个记录器系统。我做了以下投标代码:
<TextBlock x:Name="textBlock"
HorizontalAlignment="Left"
Margin="10,194,0,0"
TextWrapping="Wrap"
VerticalAlignment="Top"
Height="51"
Width="366"
Text="{Binding LogView,
Source={StaticResource logViewModel},
UpdateSourceTrigger=PropertyChanged}" />
绑定文本工作正常,但在文本框中,字符串仅在文本框中的第一行更新。该字符串应在下一行更新, 而且我不能像下面的代码那样使用附加字符串,因为我将解析字符(例如 D、E、I)然后更改字符串颜色:
mLogViewStr+=value;
请帮帮我...
日志视图模型:
namespace StretcherUI.Device
{
class LogViewModel : ILogHandler,
INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
static string savePath = @"d:\log.txt";
const int logListSize = 500;
public LogViewModel()
{
Logger.sLogHandler = this;
}
private string mLogViewStr;
public string LogView
{
get { return mLogViewStr; }
set
{
mLogViewStr = value;
}
}
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(
this,
new PropertyChangedEventArgs(propertyName));
}
public void onLog(string logFmt, params object[] arg)
{
LogView = string.Format(logFmt, arg);
}
}
}
【问题讨论】:
-
它不更新,或者在第一行之后不显示所有行?
-
你好,它更新但只在第一行..我想在第一行更新文本,然后在第二行更新下一个文本..第三行..
-
向我们展示您的 ViewModel。如果没有更多代码可以理解,这很难理解。
-
您将 textbox.Text 绑定到 logView,因此它显示了模型中的所有内容。检查 logView 是否真的是您认为的那样。
-
私有字符串 mLogViewStr;公共字符串 LogView { 获取 { 返回 mLogViewStr; } 设置 { mLogViewStr = 值; } }