我正在从WPF应用程序的代码生成一个xaml,并希望为生成的xaml添加样式.我正在使用资源字典存储我的应用程序将访问的样式信息,并根据资源字典中的键应用于生成的xaml中的相应元素.现在我想将特定样式应用于生成的xaml中的所有文本框.我想要做的是在没有键的情况下在资源字典中创建这个样式,我想将这个样式资源添加到生成的xaml的资源中.我似乎找不到一种方法来在没有密钥的情况下将特定资源添加到此生成的xaml的资源字典中.我的问题是,是否可以这样做,即在没有该资源的密钥的情况下将资源添加到用户控件(或窗口等)的资源字典中?
例如,这是我想要生成的XAML:
<UserControl>
<UserControl.Resources>
<Style TargetType="{x:Type TextBox}">
<!--The TextBox style-->
</Style>
</UserControl.Resources>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
谢谢!
分支这个问题 -
将验证错误模板附加到我的自定义文本框时 -
<local:CustomTextBox CustomText="{Binding ViewModelProperty}" Validation.ErrorTemplate="{StaticResource errorTemplate}"/>
<ControlTemplate x:Key="errorTemplate">
<DockPanel>
<Border BorderBrush="Red" BorderThickness="1">
<AdornedElementPlaceholder x:Name="controlWithError"/>
</Border>
<TextBlock Foreground="Red" FontSize="20" FontFamily="Segoe UI" Margin="3,0,0,0" MouseDown="Exclamation_MouseDown" Tag="{Binding AdornedElement.(Validation.Errors)[0].ErrorContent, ElementName=controlWithError}">!</TextBlock>
</DockPanel>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)
如果ViewModelProperty中存在验证错误,我的应用程序抛出异常 -
Key cannot be null.
Parameter name: key
Run Code Online (Sandbox Code Playgroud)
我不确定为什么会这样.是否需要执行某些操作才能将新错误模板分配给自定义控件?
更新:
我已经发现问题在于错误模板中的Tag属性.如果我删除标签,它就可以正常工作.
谢谢
我有一个自定义文本框定义如下:
public class CustomTextBox : TextBox
{
public static DependencyProperty CustomTextProperty =
DependencyProperty.Register("CustomText", typeof(string),
typeof(CustomTextBox));
static CustomTextBox()
{
TextProperty.OverrideMetadata(typeof(SMSTextBox),
new FrameworkPropertyMetadata(string.Empty,
FrameworkPropertyMetadataOptions.Journal |
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
new PropertyChangedCallback(CustomTextBox_OnTextPropertyChanged));
}
public string CustomText
{
get { return (string)GetValue(CustomTextProperty); }
set { SetValue(CustomTextProperty, value); }
}
private static void CustomTextBox_OnTextPropertyChanged(DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
CustomTextBox customTextBox = d as CustomTextBox;
customTextBox.SetValue(CustomTextProperty, e.NewValue);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在绑定XAML中的自定义文本属性 -
<local:CustomTextBox CustomText="{Binding ViewModelProperty}" />
Run Code Online (Sandbox Code Playgroud)
我面临的问题是,当我在CustomTextBox中输入任何内容时,更改不会反映在ViewModelProperty中,即ViewModelProperty没有得到更新.CustomTextProperty正在更新,但我想我需要做一些额外的事情来使绑定工作.
我不做什么?我将不胜感激任何帮助.
谢谢
我正在尝试创建一个可以在多个 API 项目中使用的 API 模块。我希望模块有一个控制器,其动作可以根据实现的 API 要求进行覆盖。
我有以下项目结构:
Module
-Controllers
-ModuleController.cs
-Interfaces
-IModel.cs
-Models
-Model.cs
API
-Controllers
-DerivedModuleController.cs
Run Code Online (Sandbox Code Playgroud)
IModel.cs
public interface IModel
{
int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
模型.cs
public class Model : IModel
{
public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
模块控制器.cs
[Route("api/module/[action]")]
public class ModuleController : Controller
{
[ActionName("GetModel")]
[HttpGet("{id}")]
public virtual Model GetModel(int id)
{
return new Model() { Id = id };
}
}
Run Code Online (Sandbox Code Playgroud)
派生模块控制器.cs
public class DerivedModuleController : ModuleController
{
public override …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个包含多个模块的库,但在模块依赖性方面遇到困难。我使用 Angular 6:
"@angular-devkit/build-ng-packagr": "^0.7.0-rc.3",
"@angular-devkit/build-angular": "^0.7.0-rc.3",
"ng-packagr": "^4.0.0",
Run Code Online (Sandbox Code Playgroud)
我首先创建一个新库,使用ng g library package它创建了以下结构
projects
|- package
|- src
| |- lib
| | |- *.ts
| |-public_api.ts
|- ng-package.json
|- package.json
|- tsconfig.lib.json
Run Code Online (Sandbox Code Playgroud)
我想添加一个子包,其中包含一个依赖于主包的模块。ng-packagr 使用的子包结构(据我所知)是这样的:
projects
|- package
|- src
| |- lib
| | |- package.module.ts
| |-public_api.ts
|- ng-package.json
|- package.json
|- tsconfig.lib.json
|
|- sub-package
| |-src
| | |- sub-package.module.ts
| |- public_api.ts
| |- package.json
Run Code Online (Sandbox Code Playgroud)
子package.module依赖于package.module。我无法在 sub-package.module 中使用相对路径进行导入,因为我收到一条错误消息,指出包的所有代码都应位于 rootDir 中。
当我尝试使用添加到 tsconfig 的 …
我们有一个在 Visual Studio 中使用的 .net core 2.0 项目。我想切换到使用 VS Code。我更新了 launchsettings.json 以包含项目启动配置文件(而不是 IIS),并进行了必要的更改以便能够使用 dotnet cli 运行它。
但是,当我尝试在 VS Code 中启动它时,我看不到正在使用 dotnet run 的位置,因为我想使用该命令来运行该项目,因为我们需要将配置传递给该命令才能使其工作. 命令行如下所示:
dotnet run -c Dev --launch-profile Project
Run Code Online (Sandbox Code Playgroud)
我不知道如何设置 vs 代码以使用上述命令启动。
如何从WPF浏览器应用程序中删除导航栏?我正在使用iframe来保存xbap,当我使用WPF浏览器应用程序打开网页时,它会显示iframe中的前进/后退导航按钮.
谢谢
我有一个绑定到属性的TextBox,我已将其UpdateSourceTriggerProperty 设置为Explicit可以控制何时进行验证.但是,只要UI加载控件验证.我从来没有从后面的代码调用UpdateSource方法进行绑定.我不确定为什么会这样,但我不知道如何解决它.
有没有理由UpdateSourceTrigger="Explicit"不工作?
请帮忙!谢谢!
编辑:最初TextBox为空,在验证时会导致验证错误.我想避免这种情况.我想仅在文本框失去焦点或单击验证按钮时才显式验证.现在,如果我理解正确的话,我需要做的就是在TextBox_LostFocus处理程序中为BindingExpression调用UpdateSource方法,并为按钮调用Click事件处理程序.但是,我无法弄清楚如何避免初始验证,或者在我点击TextBox之前避免验证.我已经使用了一种解决方法(我不喜欢),但我更愿意找到一种更好的方法.
我正在使用MVVM,是的.谢谢你的解释!这非常有帮助.
进一步编辑:是的,我正在使用IDataErrorInfo
wpf ×5
.net-core ×1
angular ×1
angular6 ×1
binding ×1
data-binding ×1
dotnet-cli ×1
ng-packagr ×1
validation ×1