AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / 问题

All perguntas(coding)

Martin Hope
Samuel Hao
Asked: 2025-04-04 23:43:11 +0800 CST

Como sincronizar regiões de seleção entre o perfil original e seu gráfico derivado no DM?

  • 7

Estou trabalhando com dm-script para processar um perfil bruto. Primeiro calculo sua primeira derivada para detectar bordas e, então, deixo os usuários selecionarem uma região entre essas bordas no gráfico de derivadas. No entanto, gostaria que a mesma caixa de seleção também aparecesse simultaneamente no gráfico de perfil bruto original para guiar o usuário intuitivamente.

Atualmente, minha implementação usa funções compostas para empilhar verticalmente dois gráficos (perfil bruto e perfil derivado). Embora funcione, a sincronização entre regiões interativas parece incômoda e não muito elegante.

Existe uma maneira melhor ou mais eficiente no script DM para vincular regiões de seleção interativas entre o perfil original e seu gráfico derivado?

Quaisquer sugestões ou exemplos de código são bem-vindos!

Class CMyHandleLegend
{
    TagGroup CreateLegendTags(object self, CompoundDocument doc, number selectedCMDid)
    {
        TagGroup Legend = NewTagList();
        
        for(number i = 0; i < doc.CompoundDocumentCountImageDisplays() - 1; i++)
        {
            ImageDisplay ithDisp = doc.CompoundDocumentGetImageDisplay(i);
            string buttonName = ithDisp.ImageDisplayGetImage().ImageGetName();
            number buttonCMDid = 10000 + ithDisp.ComponentGetCompoundID();
            
            TagGroup button = NewTagGroup();
            button.TagGroupSetTagAsUInt32("ID", buttonCMDid);
            button.TagGroupSetTagAsString("Name", buttonName);
            button.TagGroupSetTagAsBoolean("Selected", buttonCMDid == selectedCMDid);
            Legend.TagGroupAddTagGroupAtEnd(button);
        }
        // Legend.TagGroupOpenBrowserWindow(0)
        return Legend;
    }
    
    void GetIthDisplayInfo(object self, CompoundDocument doc, number i, number &compID, number &AR, string &name)
    {
        ImageDisplay ithDisp = doc.CompoundDocumentGetImageDisplay(i);
        Image ithImg = ithDisp.ImageDisplayGetImage();
        
        compID = ithDisp.ComponentGetCompoundID();
        Result("\n" + compID)
        number sx = ithImg.ImageGetDimensionSize(0);
        number sy = ithImg.ImageGetDimensionSize(1);
        AR = (0 < sy) ? sx / sy : 1;
        AR = clip(AR, 0.5, 2);
        name = ithImg.ImageGetName();
    }
    
    TagGroup CreateRowLayout(object self, CompoundDocument doc, number cmdID)
    {
        number rowH = 300;
        
        TagGroup Layout = CreateCompoundDocumentLayoutTagGroup("CompoundDocument Example 2");
        TagGroup row = Layout.CompoundDocumentLayoutAddRow(rowH);
        TagGroup row2 = Layout.CompoundDocumentLayoutAddRow(rowH);
        
        number iCompID, iAR;
        string iName;
        number nImgD = doc.CompoundDocumentCountImageDisplays();
        
        for(number i = 0; i < nImgD; i++)
        {
            self.GetIthDisplayInfo(doc, i, iCompID, iAR, iName);
            
            if ((iCompID + 10000) == cmdID)
                row.CompoundDocumentLayoutAddColumnAsImage(rowH * iAR, iName, iCompID);
            if ((iCompID + 10000) == (cmdID + 1))
                row2.CompoundDocumentLayoutAddColumnAsImage(rowH * iAR, iName, iCompID);
        }
        
        Layout.TagGroupSetTagAsBoolean("Legend", 1);
        Layout.TagGroupSetTagAsTagGroup("Buttons", self.CreateLegendTags(doc, cmdID));
        
        return Layout;
    }
    
    void ChooseLayout(object self, CompoundDocument doc, number cmdID)
    {
        TagGroup Layout = self.CreateRowLayout(doc, cmdID);
        //Layout.TagGroupOpenBrowserWindow(0);
        doc.CompoundDocumentShow(Layout);
    }
    
    void HandleLegendButtonPressed(object self, number flags, CompoundDocument doc, number cmdID)
    {
        Result("\n Received button message from: " + doc.ImageDocumentGetName());
        Result("\n Button ID: " + cmdID);
        self.ChooseLayout(doc, cmdID);
    }
}

Image absolute_first_derivative(Image in)  
{  
    // Edge detected at the peak (maximum absolute value) of the first derivative curve  
  
    Number size_x, size_y, origin, scale  
    String units  
    Image out  
  
    in.ImageGetDimensionCalibration(0, origin, scale, units, 0)  
    in.GetSize(size_x, size_y)  
    if (size_y != 1) Result("Only compatible with 1D image")  
  
    out := RealImage("first_derivative", 4, size_x, size_y)  
  
    out = abs(in[icol + 1, irow] - in[icol, irow])  
    //out[0, 0] = 0  
    //out[size_x - 1, 0] = 0  
  
    out.ImageSetDimensionCalibration(0, origin, scale, units, 0)  
    return out  
}

void ShowLegendCompoundDocument()
{
    CompoundDocument doc = NewCompoundDocument("CompoundDoc Example");
    
    image img1 := RealImage("test", 4, 200);
    img1 = 100

    img1[0,0,1,50] = 50
    img1[0,150,1,200] = 50
    Image img2 := absolute_first_derivative(img1)
    Image img3 = img1
    Image img4 := absolute_first_derivative(img3)

    img1.SetName("test 1")
    img2.SetName("test 2")
    img3.SetName("test 3")
    img4.SetName("test 4")
    
    doc.ImageDocumentAddImageDisplay(img1.ImageCreateImageDisplay(-2));
    doc.ImageDocumentAddImageDisplay(img2.ImageCreateImageDisplay(-2));
    doc.ImageDocumentAddImageDisplay(img3.ImageCreateImageDisplay(-2));
    doc.ImageDocumentAddImageDisplay(img4.ImageCreateImageDisplay(-2));
    
    object obj = Alloc(CMyHandleLegend);
    number listenID = doc.CompoundDocumentAddListener(obj, "compounddocument_buttonpressed:HandleLegendButtonPressed");
    
    obj.ChooseLayout(doc, 10008);
}

ShowLegendCompoundDocument();
dm-script
  • 1 respostas
  • 29 Views
Martin Hope
Javi Ps
Asked: 2025-04-04 23:42:40 +0800 CST

Problema com Unity OnMouseDrag

  • 5

Estou com problemas para ativar um som quando giro uma estátua. Tenho que segurar a tecla control e clicar no objeto para fazê-lo girar. O som ativa corretamente e na maioria das vezes ele desliga, mas às vezes ele continua tocando e nunca desliga.

    KeyCode pickUpKey = KeyCode.LeftControl; 
    float rotationSpeed = 0.5f;
    AudioSource idolMoving;
    void Awake()
    {
        idolMoving = GetComponent<AudioSource>();
    }
    void OnMouseDrag()
    {
        float yAxisRotation = Input.GetAxis("Mouse X") * rotationSpeed;
        transform.Rotate(Vector3.up, yAxisRotation, Space.Self);
        if (Input.GetAxis("Mouse X") != 0 && Input.GetKey(pickUpKey))
        {
            idolMoving.enabled = true;
        }
        else
        {
            idolMoving.enabled = false;
        }
    }

Isso aconteceu com mais alguém ou sabe como consertar? Obrigado antecipadamente.

c#
  • 2 respostas
  • 31 Views
Martin Hope
Jose Villacres
Asked: 2025-04-04 23:36:48 +0800 CST

Weblogic 14.1.2.0.0 não exibe logs no console com log4j2

  • 5

Estou usando o WebLogic 14.1.2.0.0 e tentando configurar o Log4j2 para fazer log no meu aplicativo, mas os logs não estão aparecendo no console.

<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-api</artifactId>
  <version>2.20.0</version>
</dependency>
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-core</artifactId>
  <version>2.20.0</version>
</dependency>

@Stateless
@GetTypeQualifierV2
public class GetTypeUserEvent implements EventTypeUserHandler {

    private static final Logger LOGGER = LogManager.getLogger(GetTypeUserEvent.class);

    @Override
    public void handle(Object event) {
        LOGGER.info("GetTypeUserEvent.handle() called with event: {}", event);
    }
}

/src/main/resources/log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    </Console>
  </Appenders>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

startWebLogic.cmd

set "JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.log.Log4jLoggingEnabled=true"

Como configurar o Log4j2 para funcionar corretamente no Weblogic 14.1.2.0.0?

Tentei forçar a ativação em startWeblogic.cmd e também em setDomainEnv.cmd ou setDomainEnv.sh e ainda não funciona.

java
  • 2 respostas
  • 49 Views
Martin Hope
bwbecker
Asked: 2025-04-04 23:27:13 +0800 CST

Usando Mill para publicar biblioteca JVM/JS com código específico da plataforma

  • 5

Quero publicar (pelo menos localmente) uma biblioteca multiplataforma JVM/JS usando Mill. Tenho muito disso funcionando com o arquivo de build mostrado abaixo.

A parte que me deixou perplexo é que eu gostaria de incluir uma quantidade modesta de código específico da plataforma. A abordagem mais óbvia para mim é colocar esse código em dois diretórios separados, xpJVMe xpJSfazer xpShared.jvme xpShared.jsdepender deles. Mas isso gera um conflito de tipo com o PublishModule:

[build.mill-61] [error]  found   : package_.this.xpJS.type
[build.mill-61] [error]  required: mill.scalalib.PublishModule
[build.mill-61] [error]     def moduleDeps = Seq(xpJS)
[build.mill-61] [error]                          ^
[build.mill-61] [error] /Users/bwbecker/temp/xp/build.mill:21:26: type mismatch;

Aqui está a parte importante do layout do arquivo:

.
├── build.mill
├── xpJS
│   └── src
│       └── Platform.scala
├── xpJVM
│   └── src
│       └── Platform.scala
└── xpShared
    ├── src
    │   └── XP.scala
    └── test
        └── src
            └── XPTests.scala

Aqui está o build.millarquivo:


package build
import mill._, scalalib._, scalajslib._, publish._

trait AppScalaModule extends ScalaModule {
  def scalaVersion = "3.3.5"
}

trait AppScalaJSModule extends AppScalaModule with ScalaJSModule {
  def scalaJSVersion = "1.16.0"
}

// JVM-specific stuff
object xpJVM extends AppScalaModule
// JS-specific stuff
object xpJS extends AppScalaJSModule 

object xpShared extends AppScalaModule {
  trait SharedModule extends AppScalaModule with PlatformScalaModule 
  
  object jvm extends SharedModule with XP_Publish {
    // The following line causes a compile error
    def moduleDeps = Seq(xpJVM)
    object test extends ScalaTests {
      def ivyDeps = Agg(ivy"com.lihaoyi::utest::0.8.5")
      def testFramework = "utest.runner.Framework"
    }
  }

  object js extends SharedModule with AppScalaJSModule with XP_Publish {
    // The following line causes a compile error
    def moduleDeps = Seq(xpJS)
    object test extends ScalaTests with ScalaJSTests {
      def ivyDeps = Agg(ivy"com.lihaoyi::utest::0.8.5")
      def testFramework = "utest.runner.Framework"
    }
  }
}

trait XP_Publish extends PublishModule {
  override def publishVersion          = "0.1.0"
  override def artifactName = "xp"

  override def pomSettings = PomSettings(
    description = "A cross-platform library.",
    organization = "ca.uwaterloo",
    url = "",
    licenses = Seq(),
    versionControl = VersionControl(),
    developers = Seq()
  )
}

Alguma sugestão sobre como proceder? Tenho duas:

  1. Tente usar o CrossScalaModulemostrado na documentação do Mill . Sou cético em relação a essa abordagem porque envolve muita sobrecarga para algo que não preciso (várias versões do Scala) e não há nada naquele exemplo que resolva meu problema específico (código específico da plataforma).
  2. Substitua o sourcesfor xpShared.jse xpShared.jvmpara incluir as fontes em xpJSand xpJVM. Estou mais otimista de que isso funcionará, mas a abordagem descrita acima parece muito mais direta. Eu preferiria essa abordagem, se possível.

Obrigado por qualquer sugestão que você tenha!

mill
  • 1 respostas
  • 7 Views
Martin Hope
Jerome
Asked: 2025-04-04 23:15:01 +0800 CST

detecção e processamento de retorno de carro com avanço de linha na resposta XML

  • 5

Ao consultar uma API que responde em XML surge um elemento interessante ao rastrear no console dados fictícios, layout não :

   <address>SUTTER 10821
1032 LALALAND</address>

a análise está sendo executada pelo httpartyruby ​​gem.
A quebra de linha na string é salva como \nem um tipo de dado text. No entanto, ao renderizar em rails com .html_safe, nenhuma nova linha é renderizada.

Qual é a melhor maneira de processar o atributo de endereço no momento da gravação do registro?

ruby-on-rails
  • 1 respostas
  • 25 Views
Martin Hope
Harald
Asked: 2025-04-04 23:00:08 +0800 CST

Digitação de função genérica para criar n-tuplas de parâmetros e chamar um consumidor

  • 6

Considere o seguinte pseudo-TypeScript, onde Classdenota algo parecido com um construtor:

function convert<C extends Class>(
  stuff: unknown,
  mappers: [Mapper<unknown, parameter i of constructor C>],
  c: constructor of C
): C {
  return c(...mappers.map((f) => f(stuff))
}

A ideia é que cada um mapperextraia um parâmetro do construtor stuffe a tupla de resultado seja passada ao construtor.

Nesta forma simples seria um tanto bobo, pois eu sempre poderia chamar o construtor como new C(map1(stuff), map2(stuff), ...)em vez de chamar esta construção elaborada. Mas uma vez que eu tenha o acima, eu quero adicionar tratamento de erro para os mapeadores de forma que o construtor seja chamado somente se nenhum tiver um problema.

O que tenho até agora:

type Class = abstract new (...args: any) => any;
type Func<A, C> = (a: A) => C;
type FuncTuple<A, TUP> = { [P in keyof TUP]: Func<A, TUP[P]> };
type ParamFuncTuple<A, C extends Class> = FuncTuple<A, ConstructorParameters<C>>;

function boo<C extends Class>(
  text: unknown,
  funcs: ParamFuncTuple<unknown, C>,
  c: Class
) {
  const params = funcs.map((f) => f(text))
}

Aqui o compilador diz const paramshas type any[]o que não é muito promissor. Isso é possível?

typescript
  • 1 respostas
  • 31 Views
Martin Hope
Marcel Derks
Asked: 2025-04-04 22:53:45 +0800 CST

Como alinhar à direita o conteúdo em um VStack de tamanho intrínseco no SwiftUI

  • 6

Essa provavelmente é uma pergunta simples, mas estou com muita dificuldade.

Vamos supor que eu tenha o seguinte Layout de Visualização no SwiftUI

Quero que a String de Data 10.5.2020seja alinhada à direita no VStack pai.

Mas é importante que, ao fazer isso, o tamanho intrínseco do VStack não seja quebrado.

Estou dizendo isso porque as duas soluções mais óbvias estão fazendo isso.

  1. Cerque com HStacke coloque um Spacerà esquerda.
  2. Use quadro com maxWidth: .infinityealignment: .trailing

Dei uma olhada mais aprofundada nos guias de alinhamento, mas não consegui consertar com isso.

Meus melhores resultados até agora foram com GeometryReader, definindo a largura do rótulo de texto quase igual à largura do VStack circundante.

Mas infelizmente minha estrutura de alvo é muito mais complexa e essa abordagem leva a problemas nessa estrutura. Também GeometryReaderparece inapropriado fazer alinhamento.

struct ContentView: View {
    var body: some View {
        ScrollView {
            VStack(alignment: .leading) {
                
                HStack {
                    VStack(alignment: .leading) {
                        Text("Alignment Test")
                        Text("This is a longer text left aligned")
                         
                        
                        Text("10.5.2020")
                    }
                    .padding(16)
                    .background(Color.blue)
                    
                    Spacer(minLength: 50)
                }
                
                
                HStack {
                    VStack(alignment: .leading) {
                        Text("left")
                        Text("Date should rigzht align to here <-")
                        Text("10.5.2020")
                    }
                    .padding(16)
                    .background(Color.blue)
                    
                    Spacer(minLength: 50)
                }
            }
            .frame(maxWidth: .infinity, maxHeight: .infinity)
            .border(.red)
        }
        .frame(maxWidth: .infinity, maxHeight: .infinity)
        .background(Color.gray.opacity(0.5))
    }
}

Prévias:

insira a descrição da imagem aqui

swiftui
  • 2 respostas
  • 41 Views
Martin Hope
Sitepor500.com.br
Asked: 2025-04-04 22:51:13 +0800 CST

Por que essa expressão regular está retrocedendo mesmo usando o grupo atômico?

  • 8

Eu tenho essa regex aaa.+?(?>bbb)je essa string de entrada aaa xxx bbby xxx bbbj. Quando executo essa regex, ela retorna aaa xxx bbby xxx bbbjMAS, como usei um grupo atômico, (?>bbb)a regex deveria ter falhado, porque li online que, ao usar um grupo atômico, o interpretador de regex não retrocede.

Então, ao encontrar o primeiro bbbna string de entrada, ele deve "ficar" com ele, então ele verificará a próxima letra e será yque não é a pretendida, jentão ele deve desistir e falhar. No entanto, por algum motivo, o interpretador regex continua tentando e, eventualmente, encontra o último bbbj. Como posso fazê-lo falhar no primeiro bbbque encontrou?

OBSERVAÇÃO: Tentei usar o quantificador ganancioso/preguiçoso, mas não fez diferença no caso acima.

  • 2 respostas
  • 65 Views
Martin Hope
shrimp
Asked: 2025-04-04 22:50:44 +0800 CST

Como posso anexar meu conjunto de dados com base no registro de data e hora?

  • 6

Tenho dois conjuntos de dados, um que chamarei de mestre e o outro de suplementar. Ambos têm observações em intervalos de 10 minutos, mas há lacunas de tempo no mestre que desejo preencher com o suplementar. Normalmente, eu usaria apenas um left_join, mas o suplementar também tem carimbos de data/hora sobrepostos do mestre. Quero apenas transferir os carimbos de data/hora exclusivos do suplementar para o mestre. Código de exemplo abaixo:

TIMESTAMP <- c("2019-04-27 17:30:00", "2019-04-27 17:40:00", "2019-04-27 17:50:00", "2019-04-27 18:10:00", "2019-04-27 18:30:00", "2019-04-27 18:40:00")
dates<-c("2019-04-27", "2019-04-27", "2019-04-27", "2019-04-27", "2019-04-27", "2019-04-27")
Tower <- c("TW2", "TW2", "TW2", "TW2", "TW2", "TW2")
Camera <- c("C5N","C5N","C5N","C5N","C5N","C5N")
Cow <-c(0, 1, 0, 0, 0, 5)

Master<- data.frame(TIMESTAMP, dates, Tower, Camera, Cow)

TIMESTAMP <- c("2019-04-27 17:30:00", "2019-04-27 17:40:00", "2019-04-27 18:00:00", "2019-04-27 18:10:00", "2019-04-27 18:20:00","2019-04-27 18:30:00")
dates<-c("2019-04-27", "2019-04-27", "2019-04-27", "2019-04-27", "2019-04-27", "2019-04-27")
Tower <- c("TW2", "TW2", "TW2", "TW2", "TW2", "TW2")
Camera <- c("C4N","C4N","C4N","C4N","C4N","C4N")
Cow <-c(0, 1, 4, 0, 2, 0)

Supplemental<- data.frame(TIMESTAMP, dates, Tower, Camera, Cow)

Tentei usar anti_join no pacote dplyr, mas o dataframe resultante tinha apenas 2 observações, então algo deve estar errado.

require(dplyr)
Complete<-Master%>%
  anti_join(Supplemental, by=join_by(TIMESTAMP==TIMESTAMP))

Qualquer ajuda é bem-vinda!

  • 2 respostas
  • 50 Views
Martin Hope
Yaya0306
Asked: 2025-04-04 22:22:45 +0800 CST

Não consigo encontrar uma maneira de alterar o tamanho do botão de alternância do WPF Treeview

  • 5

Tenho um aplicativo em produção com um controle TreeView, mas quando o cliente quer expandir ou recolher a árvore, ele acha muito chato clicar no botão de alternância porque o botão é muito pequeno. Tentei de tudo para remodelar o botão, mas ou ele mexe com meu outro controle ou eu perco completamente a funcionalidade de Expandir/Recolher quando consigo estilizá-lo. Aqui está o botão: insira a descrição da imagem aqui

Veja como meu código funciona:

<ListBox.ItemTemplate>
    <DataTemplate>
        <TreeView x:Name="EntityTreeView" BorderThickness="0">
            <HeaderedContentControl>
                <StackPanel Orientation="Horizontal" Margin="0,0,0,0" >
                    
                    .....

                </StackPanel>
            </HeaderedContentControl>
            <TreeViewItem>
                <ScrollViewer HorizontalScrollBarVisibility="Auto" MaxHeight="300">
                    <StackPanel Orientation="Horizontal">
                        <Grid Name="Cursor" Height="50" Width="50" Focusable="False">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition/>
                                <ColumnDefinition/>
                                <ColumnDefinition/>
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition/>
                                <RowDefinition/>
                                <RowDefinition/>
                            </Grid.RowDefinitions>
                           ....
                        </Grid>
                        <!-- Entity's parameter list -->
                        <ListBox Grid.Column="1" x:Name="parametersList" ItemsSource="{Binding Path=Parameters, UpdateSourceTrigger=PropertyChanged}" BorderThickness="0">
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal" Visibility="{Binding Path=Visible}">
                                        .....
                                    </StackPanel>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </StackPanel>
                </ScrollViewer>
            </TreeViewItem>
        </TreeView>
    </DataTemplate>
</ListBox.ItemTemplate>

É isso que estou tentando fazer funcionar:

</ResourceDictionary>
    <!-- Style for TreeView expanders that are too small -->
    <!-- Toggle Button -->
    <Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton">
        <Setter Property="Focusable" Value="False"/>
        <Setter Property="Width" Value="24"/>
        <Setter Property="Height" Value="24"/>
        <Setter Property="Padding" Value="4"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ToggleButton">
                    <Grid Width="24" Height="24">
                        <ContentPresenter/>
                        <Path x:Name="Arrow" Fill="Black" Data="M 5,10 L 15,10 L 10,15 Z"/>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked" Value="True">
                            <Setter TargetName="Arrow" Property="Data" Value="M 5,5 L 15,10 L 5,15 Z"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    <!-- TreeViewItem Style (Automatically Applies Expander Style) -->
    <Style TargetType="TreeViewItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TreeViewItem">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>

                        <!-- Custom Expander Button -->
                        <ToggleButton x:Name="Expander"
                              IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" 
                              Style="{StaticResource ExpandCollapseToggleStyle}"/>

                        <!-- TreeViewItem Header -->
                        <ContentPresenter Grid.Column="1" ContentSource="Header" Margin="5,0,0,0"/>

                        <!-- Items Presenter -->
                        <ItemsPresenter Grid.Column="1" Margin="20,0,0,0"/>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>
c#
  • 1 respostas
  • 28 Views
Prev
Próximo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve