プログラムの事とか

お約束ですが「掲載内容は私個人の見解です」

.Net Framework 4.7で動きが変わったところ(WPF)

たまたま見つけたの一つだけです

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition MaxHeight="0" />
        <RowDefinition Height="*" />
        <RowDefinition MaxHeight="4" />
    </Grid.RowDefinitions>
    <Rectangle Fill="Green"/>
    <Rectangle Grid.Row="1" Fill="Blue"/>
    <Rectangle Grid.Row="2" Fill="Orange"/>
</Grid>

こういうXAMLを用意します

RowDefinitionにMaxHeightしか書いていないとかなかなかの気持ち悪さを含んでいます

.Net Framework 4.6.2の場合

f:id:puni-o:20170406164315p:plain

MaxHeightをHeightで処理してくれているような動きですね

.Net Framework 4.7の場合

f:id:puni-o:20170406164400p:plain

どのように解釈したのかわからない結果になりました(どこかにドキュメントでもあるのかな?)

おまけ

<ControlTemplate x:Key="DefaultVerticalScrollBar" TargetType="{x:Type ScrollBar}">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition MaxHeight="0" />
            <RowDefinition Height="0.00001*" />
            <RowDefinition MaxHeight="4" />
        </Grid.RowDefinitions>
        <Rectangle Grid.Row="1" Fill="Blue" Width="4" VerticalAlignment="Stretch" Margin="0,4,0,0"/>
        <Track x:Name="PART_Track" Grid.Row="1" IsDirectionReversed="true">
            <Track.DecreaseRepeatButton>
                <RepeatButton Command="ScrollBar.PageUpCommand" Visibility="Collapsed"/>
            </Track.DecreaseRepeatButton>
            <Track.Thumb>
                <Thumb Margin="0,1,0,1" Background="Green">
                </Thumb>
            </Track.Thumb>
            <Track.IncreaseRepeatButton>
                <RepeatButton Command="ScrollBar.PageDownCommand" Visibility="Collapsed"/>
            </Track.IncreaseRepeatButton>
        </Track>
    </Grid>
</ControlTemplate>

こんなの使っていたらエラーも何も出ずにアプリが止まりました(止まるというかいつまでたってもウィンドウが表示されない状態)

結論

ちゃんとしたXAML書け