Избегание «Целевого типа« имя типа »не может быть преобразовано в базовый тип System.String» - PullRequest
1 голос
/ 24 февраля 2012

Я использую ReSharper 6.1.1, и в моем проекте с включенным анализом решения включен в моем проекте с ошибкой:

Тип цели 'CustomControls.XSButton' не являетсяпреобразуется в базовый тип System.String

Код компилируется и работает нормально, поскольку встроенный TypeConverter в WPF позаботится об этом, кратко описанный в отчете об ошибке ReSharper .

Обратите внимание, что XSButton объявлено в сборке в моем решении - это не встроенный тип WPF.

Это код xaml, который вызывает эту ошибку в теге <Style>.

<CustomControls:XSButton
        Content="i" Grid.Column="2" Command="ApplicationCommands.Help"
        Grid.Row="0" Grid.RowSpan="2" ToolTip="Show Help" Visibility="Collapsed">
    <CustomControls:XSButton.Style>
         <Style TargetType="{x:Type CustomControls:XSButton}">
             <Setter Property="Height" Value="26"/>
             <Setter Property="Width" Value="26"/>
             <Setter Property="CornerRadius" Value="13"/>
         </Style>
   </CustomControls:XSButton.Style>
</CustomControls:XSButton>

Есть ли способ избежать этого:

  • Атрибут ожидает System.String, с каким строковым литералом я должен заменить экземпляр типа?
  • Есть ли способ игнорировать эту ошибку ReSharper?
  • Есть ли способ перегруппировать xaml, чтобы избежать этой ошибки?Например, атрибуты se directl вместо использования сеттеров?

EDIT

Проблема возникает только тогда, когда тег стиля внутри тегатого же типа, в данном случае «foo: Bar».Обратите внимание, что я открыт, чтобы избежать этой ошибки любым возможным способом?Возможно, полностью изменить код xaml.

enter image description here

Ответы [ 2 ]

3 голосов
/ 25 февраля 2012

К сожалению, это ошибка в R # 6.1.1. Проблема уже исправлена, и исправление будет доступно в следующей основной версии R #. Приносим извинения за неудобства.

Вы можете просто обойти это так:

<foo:Bar Command="ApplicationCommands.Help">
  <!-- just use the separate resource for base style: -->
  <foo:Bar.Resources>
    <Style x:Key="baseStyle" TargetType="{x:Type foo:Bar}">
    </Style>
  </foo:Bar.Resources>

    <foo:Bar.Style>
        <Style TargetType="{x:Type foo:Bar}"
               BasedOn="{StaticResource baseStyle}">
            <Setter Property="VerticalAlignment" Value="Top"/>
        </Style>
    </foo:Bar.Style>
</foo:Bar>

Просто поместите объявление стиля BasedOn в отдельный ресурс.

1 голос
/ 29 февраля 2012

Чтобы просто скрыть ошибку для анализа решения ReSharper в целом, вы можете настроить ее на игнорирование.
Открыть Окно ошибок ошибок от ReSharper-> Windows-> Окно Soultion Errors .
Щелкните раздражающую ошибку правой кнопкой мыши и выберите Игнорировать ошибку .

Вот скриншот с другой ошибкой в ​​качестве примера:

Если вы хотите снова включить ошибку, вы можете отменить ошибку, игнорируя:

Stopping ignoring error

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...