wpf - 无法设置未知成员 'System.Windows.Controls.TextBox.IsReadOnly
问题描述
我正在为 ComboBox 制作样式并将此代码添加到 ComboBox 模板
...
<TextBox x:Name="PART_EditableTextBox"
Style="{x:Null}"
Template="{StaticResource ComboBoxTextBox}"
HorizontalAlignment="Left"
VerticalAlignment="Bottom"
Margin="{TemplateBinding Padding}"
Focusable="True"
Background="Transparent"
Visibility="Hidden"
IsReadOnly="{TemplateBinding IsReadOnly}" />
...
问题出在IsReadOnly="{TemplateBinding IsReadOnly}"
财产上。Visual Studio 告诉这是一个未知成员,并且不会在设计器中呈现 ComboBox。但是,如果我启动该项目,它将正常工作。顺便说一句, ComboBox 有 property IsReadOnly
。如何解决这个故障?
更新:组合框模板
<Style TargetType="{x:Type ComboBox}">
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="OverridesDefaultStyle" Value="true" />
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" />
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
<Setter Property="ScrollViewer.CanContentScroll" Value="true" />
<Setter Property="MinWidth" Value="120" />
<Setter Property="MinHeight" Value="20" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ComboBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="20"/>
</Grid.ColumnDefinitions>
<ToggleButton x:Name="ToggleButton" Grid.ColumnSpan="2"
Template="{StaticResource ComboBoxToggleButtonTemplate}"
Focusable="False" ClickMode="Press"
IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
/>
<ContentPresenter x:Name="ContentSite" Grid.Column="0"
IsHitTestVisible="False"
Content="{TemplateBinding SelectionBoxItem}"
ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
Margin="{TemplateBinding Padding}"
VerticalAlignment="Stretch"
HorizontalAlignment="Left" />
<TextBox x:Name="PART_EditableTextBox"
Style="{x:Null}"
Template="{StaticResource ComboBoxTextBox}"
HorizontalAlignment="Left"
VerticalAlignment="Bottom"
Margin="{TemplateBinding Padding}"
Focusable="True"
Background="Transparent"
Visibility="Hidden"
IsReadOnly="{TemplateBinding IsReadOnly}" />
<!--IsReadOnly="{TemplateBinding IsReadOnly}"-->
<Border x:Name="Overlay" Grid.ColumnSpan="2" CornerRadius="5" Margin="-2" BorderThickness="3" BorderBrush="{StaticResource InputBorderFocused}" Visibility="Hidden"/>
<Popup x:Name="Popup"
Placement="Bottom"
IsOpen="{TemplateBinding IsDropDownOpen}"
AllowsTransparency="True"
Focusable="False"
PopupAnimation="Slide">
<Grid x:Name="DropDown" SnapsToDevicePixels="True" MinWidth="{TemplateBinding ActualWidth}"
MaxHeight="{TemplateBinding MaxDropDownHeight}">
<Border x:Name="DropDownBorder" BorderThickness="1"
BorderBrush="{DynamicResource InputBorder}"
Background="{DynamicResource InputBackground}"/>
<ScrollViewer Margin="0" SnapsToDevicePixels="True">
<StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" />
</ScrollViewer>
</Grid>
</Popup>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="HasItems" Value="false">
<Setter TargetName="DropDownBorder" Property="MinHeight" Value="95" />
</Trigger>
<Trigger Property="IsGrouping" Value="true">
<Setter Property="ScrollViewer.CanContentScroll" Value="false" />
</Trigger>
<Trigger SourceName="Popup" Property="AllowsTransparency" Value="true">
<Setter TargetName="DropDownBorder" Property="Margin" Value="0,2,0,0" />
</Trigger>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Visibility" Value="Visible" TargetName="Overlay"/>
</Trigger>
<Trigger Property="IsDropDownOpen" Value="True">
<Setter Property="Visibility" Value="Visible" TargetName="Overlay"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
解决方案
推荐阅读
- java - 在同一个套接字上的文件之后发送字符串
- java - 在 finally 块内不接受输入
- angular - 如果我更改可观察对象,异步管道是否会自动取消订阅可观察对象?
- reactjs - npm 错误!404 未找到 - 获取 https://registry.npmjs.org/@typescript-eslint%2feslint-plugin - 未找到
- rust - 在 impl 中为带有阴影方法名称的 trait 指定方法实现
- asp.net-core-webapi - Swagger UI 响应类型返回 Status (400) 400BadRequest,而不是 (201) Status201Created 但记录插入成功
- sql - 即使第二个表中缺少 id,也可以加入 2 个表
- flutter - 在颤振中我们如何使用audio_service来获取动态数据
- python-3.x - 如何在 Python 结果中添加 ( 和 )
- c++ - 为什么在 C++ 中返回一个虚拟类 *by value* 会改变 v-table?