我没有找到关于应该在类和__init__文档字符串中记录什么的最佳实践.有时我发现构造函数参数已经在docstring类中记录,有时会在__init__docstring 中描述.我更喜欢在类docstring中描述构造,因为这是您在创建新实例时调用的内容.但是应该在__init__docstring方法中记录什么呢?
编辑:
我知道google styleguide和google docstring样式示例,但两者都没有回答我的问题.文档字符串样式的例子确实说
该
__init__方法可以记录在类级别docstring中,也可以记录在__init__方法本身的docstring中.任何一种形式都是可以接受的,但这两种形式不应混合.选择一种约定来记录__init__方法并与之保持一致.
但是如果我选择将__init__函数的docstring 放入类级docstring中,那么__init__docstring 应该包含什么?
我有一个应用程序具有在某些窗口中使用的多个用户控件.其中一个用户控件定义此窗口中的所有其他用户控件是否应允许编辑,因此将IsEnabled属性设置False为所有CheckBoxes,ComboBoxes和Buttons.但是,TextBoxes应该允许复制它们的文本,因此不应该被禁用,而只能是只读的.
我试过遍历LogicalTree,但是一些自建的usercontrol没有任何属性来禁用它们,但是这个usercontrol中包含的控件只是按钮和文本框.这就是为什么我想申请一个风格多变的所有元素(CheckBox,ComboBox,Button和TextBox),但它不会工作.
在usercontrol的Ressources部分中,我定义了一些样式:
<Style TargetType="Control" x:Key="disabledStyle">
<Setter Property="IsEnabled" Value="False" />
</Style>
<Style TargetType="TextBox" x:Key="readOnlyStyle">
<Setter Property="IsReadOnly" Value="True" />
</Style>
Run Code Online (Sandbox Code Playgroud)
在CodeBehind中,在检查条件后,我尝试了以下方法:
# windowOwner is the root window containing this usercontrol
for control in [Button, ComboBox, CheckBox]:
if self.windowOwner.Resources.Contains(control):
self.windowOwner.Resources.Remove(control)
self.windowOwner.Resources.Add(control, self.Resources['disabledStyle'])
if self.windowOwner.Resources.Contains(TextBox):
self.windowOwner.Resources.Remove(TextBox)
self.windowOwner.Resources.Add(TextBox, self.Resources['readOnlyStyle'])
Run Code Online (Sandbox Code Playgroud)
但什么都没发生.我究竟做错了什么?我应该采用不同的方式吗?
=编辑1 =============================================== ===================
我现在尝试了以下,XAML:
<Style x:Key="disabledStyle">
<!--<Setter Property="Button.IsEnabled" Value="False" /> …Run Code Online (Sandbox Code Playgroud) 我的wpf有问题.问题是我的窗口,它使用了一些auto和*列中的列Grid,它打开很慢.我已经使用Visual Studio调试器来调查问题所在,并在布局部分找到它.消息是:
对XAML可视树进行了更改,该树需要计算所有受影响元素的大小和/或位置.
以下是调试器的屏幕截图:
检测布局确切问题的最佳方法是什么?或者我可以遵循一些一般规则吗?
非常感谢,我之前没有遇到过wpf的这种行为,即使是大型的usercontrols/windows ...
编辑
我不使用任何转换动画来旋转控件.一般来说,它是一个非常平坦的窗口.作为附加信息,GridView在窗口中滚动s也非常慢.
对于即将推出的使用Web Audio API的项目,我希望能够放大一些音频的音量.
正如我在文档中所读到的,增益节点将输入信号乘以其增益值.文档说明该值在0to 的范围内1,因此放大似乎不适用于增益节点.但我怎么能这样做呢?
我想基于布尔值更改DataGrid的行颜色.我查看了/sf/ask/1300642871/并以类似的方式尝试了它(在本地定义样式而不是在usercontrol的ressources),但editable属性更改时行背景不会更改.我不知道什么是错的,并且很乐意尝试一些新的东西.
<DataGrid ItemsSource="{Binding ReportSampleExaminationList}" CanUserDeleteRows="False" PreviewKeyDown="deleteRow" AutoGenerateColumns="False" HorizontalAlignment="Stretch"
RowBackground="Wheat" AlternatingRowBackground="WhiteSmoke" VerticalGridLinesBrush="Transparent" HorizontalGridLinesBrush="Gray">
<DataGrid.CellStyle >
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsSelected"
Value="True">
<Setter Property="Background"
Value="LightBlue" />
<Setter Property="Foreground"
Value="Black" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Editable}" Value="False">
<Setter Property="Background" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Editable" Binding="{Binding Editable}"/>
<DataGridTextColumn Header="Probe" Binding="{Binding SampleNumber}" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud) 假设我想对经理和员工之间一对一商定的待办事项进行建模。待办事项可能必须由经理或员工来实现。假设我想处理有关员工的一些数据,因此我对员工进行建模,如下所示:
data Employee = Employee
{ id :: Int
, name :: String
}
Run Code Online (Sandbox Code Playgroud)
进一步说,我将像这样建模我的待办事项:
data Todo = Todo
{ id :: Int
, text :: String
, realizedBy :: RealizedBy
}
Run Code Online (Sandbox Code Playgroud)
我发现RealizedBy像这样建模 -type 是最优雅的:
data RealizedBy = Manager | Employee
Run Code Online (Sandbox Code Playgroud)
当然,这是不会编译的,因为有Multiple declarations of `Employee'.
我想出的一个解决方案是不定义 -type RealizedBy,而是像这样建模:
data TodoContent = TodoContent
{ id :: Int
, text :: String
}
data Todo = ManagerTodo TodoContent | EmployeeTodo TodoContent
Run Code Online (Sandbox Code Playgroud)
对我来说,这似乎有点过度设计。对我来说,必须重复TodoContent并不是那么优雅。另外,我想不出比Employee类型或无参数构造函数(或任何所谓的名称)更好的名称来对数据进行建模。我无法摆脱这样的感觉:我可能会错过一些明显的东西,可以更优雅地解决这个问题。我是吗,或者这真的是 Haskell …
wpf ×3
xaml ×3
c# ×2
constructor ×1
datagrid ×1
docstring ×1
haskell ×1
html5 ×1
ironpython ×1
javascript ×1
layout ×1
performance ×1
python ×1
types ×1
web ×1